簡體   English   中英

訪問 > SQL > 創建表。 約束 > 外鍵

[英]Access > SQL > Create Table . Constraints > Foreign Key

以下語句用於創建表 CAMPUS。 我收到錯誤:

“CONSTRAINT 子句中的語法錯誤”
“更新”突出顯示表示錯誤來源。

通過刪除“ON UPDATE CASCADE ON DELETE NO ACTION”,我可以毫無問題地創建表。

正確的語法或程序是什么? (MS Access“幫助”沒有幫助)

SQL 代碼:

CREATE TABLE CAMPUS(                
    CampusID    Counter(1,5)    NOT NULL,    
    UnivID    Long    NOT NULL,    
    CampusName    Text(50)    NOT NULL,    
    Address    Text(50)    NULL,    
    Zip    Number    NULL,    
    Phone    Number    NULL,               
    CONSTRAINT    CampusPK    PRIMARY KEY    (CampusID,UnivID),    
    CONSTRAINT    CampusFK    FOREIGN KEY    (UnivID)
    REFERENCES UNIVERSITY(UnivID)
    ON UPDATE CASCADE 
    ON DELETE NO ACTION
    CONSTRAINT    CampusAK1    UNIQUE    (CampusName)    
    );

自 Jet 4.0 (Access2000) 以來,Access(ACE、Jet 等)在其SQL DLL中支持引用操作。 但是,它們僅在ANSI-92 查詢模式下可用。

從 Access2003 開始,Access UI 可以置於 ANSI-92 查詢模式,允許從查詢的 SQL 視圖執行更新、更豐富的 SQL DDL。 Note that ADO (OLE DB) always uses ANSI-92 Query Mode and DAO uses "traditional" ANSI-89 Query Mode (however IIRC DAO's object model has been enhanced to include all referential actions including the post-89 SET NULL action).

因此,我推測您遇到了語法錯誤,因為您在 ANSI-89 查詢模式下嘗試執行 ANSI-92 查詢模式 SQL DDL。

自從我上次使用 MS Access 以來已經 10 多年了,但似乎你只能在引用約束中的ON UPDATEON DELETE之后編寫CASCADESET NULL

所以基本上你必須省略這部分

ON DELETE NO ACTION

鏈接http://www.sqlexamples.info/SQL/bsc_sqlddl1.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM