求解oracle中的update cascade具体的用法是怎么样的

arkwi 2011-11-18 03:07:45
oracle中的update cascade具体的用法是怎么样的
...全文
240 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenChiM888 2011-11-18
  • 打赏
  • 举报
回复
oracle中没有update cascade(级联更新),只有 delete cascade(级联删除)
因此只给你举一个级联删除的例子,在支持级联更新的数据库系统里面同理。

[SYS@myoracle] SQL>CREATE TABLE t1(pk INT);

表已创建。

[SYS@myoracle] SQL>CREATE TABLE t2(pk INT);

表已创建。

[SYS@myoracle] SQL>ALTER TABLE t1 ADD CONSTRAINT pk_t1 PRIMARY KEY(pk);

表已更改。

[SYS@myoracle] SQL>ALTER TABLE t2 ADD CONSTRAINT fk_t2 FOREIGN KEY(pk) REFERENCES t1(pk) ON DELETE CASCADE;

表已更改。

[SYS@myoracle] SQL>INSERT INTO t1 VALUES(1);

已创建 1 行。

[SYS@myoracle] SQL>INSERT INTO t1 VALUES(2);

已创建 1 行。

[SYS@myoracle] SQL>INSERT INTO t2 VALUES(1);

已创建 1 行。

[SYS@myoracle] SQL>SELECT * FROM t1;

PK
----------
1
2

[SYS@myoracle] SQL>SELECT * FROM t2;

PK
----------
1

[SYS@myoracle] SQL>DELETE FROM t1 WHERE pk=1;

已删除 1 行。

[SYS@myoracle] SQL>DROP TABLE t2;

表已删除。

[SYS@myoracle] SQL>DROP TABLE t1;

表已删除。

[SYS@myoracle] SQL>
[SYS@myoracle] SQL>CREATE TABLE t1(pk INT);

表已创建。

[SYS@myoracle] SQL>CREATE TABLE t2(pk INT);

表已创建。

[SYS@myoracle] SQL>ALTER TABLE t1 ADD CONSTRAINT pk_t1 PRIMARY KEY(pk);

表已更改。

[SYS@myoracle] SQL>ALTER TABLE t2 ADD CONSTRAINT fk_t2 FOREIGN KEY(pk) REFERENCES t1(pk);

表已更改。

[SYS@myoracle] SQL>INSERT INTO t1 VALUES(1);

已创建 1 行。

[SYS@myoracle] SQL>INSERT INTO t1 VALUES(2);

已创建 1 行。

[SYS@myoracle] SQL>INSERT INTO t2 VALUES(1);

已创建 1 行。

[SYS@myoracle] SQL>SELECT * FROM t1;

PK
----------
1
2

[SYS@myoracle] SQL>SELECT * FROM t2;

PK
----------
1

[SYS@myoracle] SQL>DELETE FROM t1 WHERE pk=1;
DELETE FROM t1 WHERE pk=1
*
第 1 行出现错误:
ORA-02292: 违反完整约束条件 (SYS.FK_T2) - 已找到子记录


[SYS@myoracle] SQL>DROP TABLE t2;

表已删除。

[SYS@myoracle] SQL>DROP TABLE t1;

表已删除。

[SYS@myoracle] SQL>

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧