gpt4 book ai didi

oracle - Oracle 中的外键约束问题

转载 作者:行者123 更新时间:2023-12-04 23:23:20 31 4
gpt4 key购买 nike

在 Oracle 9i 中声明 FK 时遇到问题。我在这里查看了许多关于 SO 和一些在线文档(例如 http://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php )的示例,但没有任何运气;尝试与链接中的语法类似的语法会产生相同的错误:

Error at Command Line:19 Column:4
Error report:
SQL Error: ORA-02253: constraint specification not allowed here
02253. 00000 - "constraint specification not allowed here"
*Cause: Constraint specification is not allowed here in the statement.
*Action: Remove the constraint specification from the statement.

SQL 本身的摘录如下。 “第19行”是指以CONSTRAINT

开头的行
CREATE TABLE Flight (
flight_no varchar2(10) NOT NULL,
airplane_id varchar2(20) NOT NULL
CONSTRAINT flight_airplane_id_fk FOREIGN KEY (airplane_id) REFERENCES Airplane (airplane_id)
ON UPDATE RESTRICT ON DELETE RESTRICT,
dept_date date NOT NULL,
...

或者,在不使用 CONSTRAINT 关键字的情况下进行尝试会生成关于右括号的错误,我似乎看不到它丢失了。

PS:我知道 ON UPDATE RESTRICT 是 Oracle 中的默认行为,但我更愿意尽可能明确。

最佳答案

首先,在 Oracle 中,没有 ON UPDATE RESTRICTON DELETE RESTRICT 选项。这些在其他数据库引擎中似乎有效,但在 constraint syntax diagram 中不存在并且似乎无效。有一个 ON DELETE 子句,但只有两个有效选项是 CASCADESET NULL。没有 ON UPDATE 子句。

如果我们在约束定义之前的 airplane_id 定义末尾添加一个逗号并删除两个无效子句,您的 DDL 应该是有效的

CREATE TABLE Flight (
flight_no varchar2(10) NOT NULL,
airplane_id varchar2(20) NOT NULL,
CONSTRAINT flight_airplane_id_fk
FOREIGN KEY (airplane_id) REFERENCES Airplane (airplane_id),
dept_date date NOT NULL,
<<more columns>>
);

关于oracle - Oracle 中的外键约束问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996229/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com