[英]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 UPDATE
和ON DELETE
之后編寫CASCADE
或SET NULL
。
所以基本上你必須省略這部分
ON DELETE NO ACTION
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.