oracle中如何使用级联

Posted

技术标签:

【中文标题】oracle中如何使用级联【英文标题】:how to use cascade in oracle 【发布时间】:2012-06-24 02:25:37 【问题描述】:
create table loginDetails(
 userId   varchar(30),
 cellPhoneNo    varchar(10),    
 displayName  varchar(20),
 password   varchar(20),
 secretQuestion varchar(50),
 secretAnswer varchar(50),
 joiningDate    date,
 foreign key(userId) references userDetails(userId) on delete cascade on update cascade
);

错误出现在 oracle 中。

foreign key(userId) references userDetails(userId) on delete cascade on update

级联 *

第 9 行的错误: ORA-00907: 缺少右括号

此查询在 mysql 上运行,但在 oracle 中不运行?请任何人告诉我它在 oracle 中是如何工作的。

【问题讨论】:

对于初学者来说,供应商(MySQL、Oracle、SQL Server 等)之间的语法并不相同。 “SQL”中的“S”代表“结构化”,遗憾的是不是“标准化”。尽管 ANSI 正在努力改进这一点,但支持和性能并不总是理想的。 【参考方案1】:

Oracle 不支持主键的级联更新。主键应该是唯一且不可变的,因此它永远不需要更改。由于您永远不应该更新主键,因此不需要级联这些更新。

一般来说,您可能还应该使用VARCHAR2 数据类型而不是VARCHAR。目前,这些数据类型是相同的,但 Oracle 将来可能会更改 VARCHAR 类型的语义,以使空字符串的处理方式与 NULL 不同。假设您不希望您的应用程序在将来这些语义发生变化时可能会中断,那么使用VARCHAR2 会更安全。

【讨论】:

以上是关于oracle中如何使用级联的主要内容,如果未能解决你的问题,请参考以下文章

如何理解access设置中的“级联更新”和“级联删除”?

oracle关于删除级联条件

Oracle中使用View能缩短查询的时间么

sql中如何实现级联表的操作

如何在 SQL Server 中使用级联删除?

oracle使用connect by进行级联查询 树型菜单