我正在尝试使用ON DELETE CASCADE
在 MS Access 2007 的 FK 约束中,但我在表定义上遇到错误:
SQL 错误:CONSTRAINT 子句中存在语法错误。
这是创建表的代码:
CREATE TABLE Area (
Id AUTOINCREMENT PRIMARY KEY,
AreaType__Id int NOT NULL,
Tbl1 text(31) NOT NULL,
Tbl2__Id int NOT NULL,
CONSTRAINT UK_Area_1 UNIQUE (Tbl1, Container__Id),
CONSTRAINT FK_Area_1 FOREIGN KEY (AreaType__Id) REFERENCES AreaType (Id),
CONSTRAINT FK_Area_2 FOREIGN KEY (Tbl2__Id) REFERENCES Tbl2 (Id) ON UPDATE CASCADE ON DELETE CASCADE
);
我究竟做错了什么?我查看了 Access 帮助,我的语法似乎是正确的。我试过删除ON UPDATE CASCADE
部分,但得到了同样的错误。我还尝试使用引用表的默认 PK 字段(REFERENCES Container
代替REFERENCES Container (Id)
),但又出现同样的错误。我也搜索过,但没有找到对我的情况有用的信息。它必须是简单的东西,但我现在还没有看到它。
EDIT
值得一提的是,表定义完全按照原样正常工作,除了没有ON UPDATE CASCADE ON DELETE CASCADE
部分。仅在添加后CASCADE
零件是否出现错误。
EDIT 2
为了找出问题所在,以下是演示该错误的新测试代码:
这有效:
CREATE TABLE T1 (Id AUTOINCREMENT PRIMARY KEY);
CREATE TABLE T2 (
Id AUTOINCREMENT PRIMARY KEY,
T1__Id int NOT NULL,
CONSTRAINT FK_T2_1 FOREIGN KEY (T1__Id) REFERENCES T1 (Id)
);
这会产生错误:
CREATE TABLE T1 (Id AUTOINCREMENT PRIMARY KEY);
CREATE TABLE T2 (
Id AUTOINCREMENT PRIMARY KEY,
T1__Id int NOT NULL,
CONSTRAINT FK_T2_1 FOREIGN KEY (T1__Id) REFERENCES T1 (Id) ON DELETE CASCADE
);
任何人都可以复制该错误吗?