SQL तयार करा टेबल सिंटॅक्स त्रुटी

मर्यादांसह काही तक्ते तयार करण्याचा प्रयत्न करताना मी वाक्यरचना त्रुटींवर अडखळलो. मी मायक्रोसॉफ्ट ऍक्सेस वापरत आहे आणि ते मला सतत सल्ला देत आहे की माझी दुसरी मर्यादा चुकीची आहे. काय चाललंय? माझा कोड खालीलप्रमाणे दिसतो:

CREATE TABLE STORE 
(
StoreName Char(25) NOT NULL,
City Char(35) NULL
Country Char(50) NULL,
Phone Char(8) NULL,
Fax Char(15) NULL,
Email Varchar(100) NULL,
Contact Char(35) NULL,
CONSTRAINT StorePK PRIMARY KEY(StoreName),
CONSTRAINT Citizen CHECK (Country IN ('Belize', 'United States', 'Mexico','China', 'Germany', 'France', 'Netherlands'))
);

person ANewell_GO_PACK    schedule 03.12.2015    source स्रोत
comment
मला माहिती नाही की MS Access चेकच्या मर्यादांना समर्थन देते: msdn.microsoft .com/en-us/library/office/.   -  person Gordon Linoff    schedule 03.12.2015


उत्तरे (2)


माझा विश्वास आहे की तुम्हाला टेबल तयार करावे लागेल आणि मर्यादा जोडण्यासाठी ALTER TABLE वापरावे लागेल.

ALTER TABLE STORE
CONSTRAINT Citizen CHECK (
    Country IN (
        'Belize', 'United States', 'Mexico','China',
        'Germany', 'France', 'Netherlands'
    )
);

मला माहित नाही की ऍक्सेस 2000 पासून परिस्थिती किती बदलली आहे मला खात्री आहे की या जुन्या दस्तऐवजीकरणात दर्शविल्याप्रमाणे काही मर्यादा अजूनही लागू आहेत:

टीप चेक कंस्ट्रेंट स्टेटमेंट फक्त Jet OLE DB प्रदाता आणि ADO द्वारे कार्यान्वित केले जाऊ शकते; Access SQL View वापरकर्ता इंटरफेस वापरल्यास ते त्रुटी संदेश देईल.

https://msdn.microsoft.com/en-us/library/aa140015%28office.10%29.aspx#acintsql_ddlconst

person shawnt00    schedule 03.12.2015

ADO/OleDb वरून कार्यान्वित केल्यावर तुमचे CREATE TABLE विधान वैध प्रवेश DDL आहे. जेट 4 सह जोडलेल्या DDL वैशिष्ट्यांपैकी CHECK मर्यादा आहेत आणि जे DAO अंतर्गत समर्थित नाहीत.

याचा अर्थ असा आहे की क्वेरी डिझायनरकडून चालवल्या जाणार्‍या क्वेरीसाठी CHECK डीफॉल्टनुसार समर्थित नाही. तुम्ही प्रवेश पर्याय "SQL सर्व्हर कंपॅटिबल सिंटॅक्स (ANSI 92)" सेट करून त्या मर्यादेवर काम करू शकता. तथापि, या पर्यायाचे इतर दुष्परिणाम आहेत. तुम्ही ते वापरत असल्यास, त्या सर्व अजूनही हेतूनुसार कार्य करतात की नाही हे पाहण्यासाठी तुमच्या विद्यमान क्वेरींची चाचणी करण्याचे सुनिश्चित करा.

मी तुमचा विधान मजकूर व्हेरिएबलमध्ये ठेवला आहे आणि तो याप्रमाणे यशस्वीरित्या अंमलात आणला आहे:

CurrentProject.Connection.Execute strDDL

ते कार्य केले कारण CurrentProject.Connection एक ADO ऑब्जेक्ट आहे.

person HansUp    schedule 03.12.2015