sql - 在 CREATE TABLE 中使用 ON DELETE/UPDATE 时出现缺少关键字错误
问题描述
我刚刚开始学习 SQL,在尝试创建自己的表时,我遇到了一个障碍,因为我无法找出到底哪里出了问题。
如果我在错误的地方发布此类查询,请原谅我,但我很迷茫,因为我完全不知道哪里出了问题......
我在我的 SQL Developer 中遇到以下问题(我使用的服务器源自使用 IP 地址连接的学校服务器,但我能够获得其版本 - Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production,不确定是否有帮助)
ORA-00905: missing keyword
00905. 00000 - "missing keyword"
其中表中“更新”一词MYWORK
用红色下划线。
我的代码语句如下:
CREATE TABLE MYARTIST
(
MyArtistID Int NOT NULL,
LastName Char(25) NOT NULL,
FirstName Char(25) NOT NULL,
CONSTRAINT MyArtistPK PRIMARY KEY(MyArtistID)
);
-- This block is giving me issues, with errors stemming from the FOREIGN KEY portion
CREATE TABLE MYWORK
(
MyWorkID Int NOT NULL,
Title Char(25) NOT NULL,
Copy Char(25) NOT NULL,
MyArtistID Int NOT NULL,
CONSTRAINT MyWorkPK PRIMARY KEY(MyWorkID),
CONSTRAINT MyArtistFK FOREIGN KEY(MyArtistID) REFERENCES MYARTIST(MyArtistID)
ON UPDATE NO ACTION
ON DELETE NO ACTION
);
CREATE TABLE MYARTISTWORK
(
MyArtistID INT NOT NULL,
MyWorkID INT NOT NULL,
CONSTRAINT MyArtWorkPK PRIMARY KEY(MyArtistID, MyWorkID),
CONSTRAINT ArtFK FOREIGN KEY(MyArtistID) REFERENCES MYARTIST(MyArtistID)
ON UPDATE NO ACTION
ON DELETE CASCADE,
CONSTRAINT WorkFK FOREIGN KEY(MyWorkID) REFERENCES MYWORK(MyWorkID)
ON UPDATE NO ACTION
ON DELETE CASCADE
);
如果我删除ON UPDATE... ON DELETE...
语句,则表会正确创建,但如果我包含在语句中,则不是这样。有什么见解吗?
PS - 我使用的代码语句与我正在阅读的一本书类似 - Database Processing: Fundamentals, Design, and Implementation, Global Edition
解决方案
答案很简单——在 Oracle 中,没有ON UPDATE
这样的子句——删除它。你可以离开ON DELETE
(如果它做某事;如果是NO ACTION
,你可以省略它)。
推荐阅读
- angularjs - ng-required 将复选框从 false 更改为 undefined
- google-apps-script - 谷歌环聊聊天机器人可以消息机器人吗?
- printf - 为什么超过 100 的值变为负数?
- angular - Firefox 上的 Angular Material mat-checkbox 问题
- reactjs - 使用 geofirestore 添加、设置、更新文档
- javascript - 从服务器,如何识别 javascript fetch() 调用(asp.net mvc)
- android - 在drawable中添加和定位drawable
- python - 计算 django 电子商务中的订单总额
- class - 在另一个类 C++ 的方法中创建类对象
- python - 如何使用 python ssl 模块获取证书的签名密钥长度