两个相关联的数据表 (就是通过外键关联的)有两个概念不怎么懂:1、什么是 “级联更新相关数据字段”2、什么是 “级联删除相关数据记录”
举个例子最好了,谢谢大家了

解决方案 »

  1.   

    级联更新相关数据字段
    在外键定义的时候加 ON UPDATE  CASCADE 指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。例:create table dep(   --部门表
    id int not null CONSTRAINT PK_dep_id PRIMARY KEY NONCLUSTERED,
    name varchar(50)
    )
    gocreate table employee(   --员工表
    id int not null CONSTRAINT PK_emp_id PRIMARY KEY NONCLUSTERED,
    name varchar(50),
    depid int not null,
    CONSTRAINT FK_employee_dep FOREIGN KEY (depid)
       REFERENCES dep (id) ON UPDATE  CASCADE
    )
    goinsert dep select 2,'销售部'
    union all  select 3,'人事部'
    goinsert employee select 1,'张三',2
    union all  select 2,'李四',3goupdate employee set depid=1 where id=3
    select * from dep 
    select * from employee
    --看看以上语句出不出错,结果怎样,去掉 ON UPDATE  CASCADE,再看看级联删除相关数据记录在外键定义的时候加 ON DELETE  CASCADE 指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。差不多,不举例了
      

  2.   

    例子改一下,
    update employee set depid=1 where id=3
    --〉
    update employee set depid=1 where id=2
      

  3.   

    谢谢了那么大家在设计数据库系统,以SQL SERVER为例,在建立两个表的关系的时候,“级联更新相关数据字段”与“级联删除相关数据记录”是两个可选的项,大家都选择它们了吗?默认好像是不选的,是吧
      

  4.   

    SQL Server 2000的级联删除有限制:
    一个主表的主键字段与另一个表的两个字段不能同时设置为级联删除,只能把其中一个设置为级联删除,另一个变通处理,如:用触发器实现。
      

  5.   

    先删从表相关记录,再删除主表相关记录会放到一个事务里,事务成功提交,失败回滚
    jwt1982(飞星)说的对