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

解决方案 »

  1.   

    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>