hdhai9451(New New People---新新人类):
  谢谢你。可以删除了。不过我想 能不能 通过对一个表操作 就把其它有外键的的表的  数据一起操作了。
比如 我对student表中‘991101’的数据要删除,又没有能一起把sc表中数据一起删除的方法!

解决方案 »

  1.   

    你的这两个表是不是student 中的sno为主键,而在sc中的sno为student表的外键,
    如果是这样的话,此时,管理系统会对存在主建的表实施保护
    即当你主表中的某条记录时,只要外键表存在它的相应记录时,则不允许删除,主要
    是为了实施数据完整性。
    你要是删除外表中的记录时,则没有限制。如果你此时一定要删除主表的某条记录,而外表又存在它的相关记录时,完成这样的操作
    你可以创建instead of 触发器来实现/
      

  2.   

    xiaonvjing(飞扬) 
    你能给出一个用  instead of 触发器  做的例子吗?
      

  3.   

    这样做就可以了:
    1。企业管理器
    打开你建有外键的表--右击表--设计表--在上方点开’管理约束‘--将级连删除和级连更新的沟打上就可以了
    2。查询分析器
    alter table sc
    add
    constraint forei  foreign key(sno)
     REFERENCES student(sno)
    ON DELETE  CASCADE            
    ON UPDATE  CASCADE
      

  4.   

    ON DELETE {CASCADE | NO ACTION}指定当表中被更改的行具有引用关系,并且该行所引用的行从父表中删除时,要对被更改行采取的操作。默认设置为 NO ACTION。 如果指定 CASCADE,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行删除操作。如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。如果对 Customers 表的某行执行 DELETE 语句,并且为 Orders.CustomerID 指定 ON DELETE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同删除。反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 表中要删除的行,则 SQL Server 将产生一个错误并回滚 Customers 表中的删除操作。ON UPDATE {CASCADE | NO ACTION}指定当表中被更改的行具有引用关系,并且该行所引用的行在父表中更新时,要对被更改行采取的操作。默认设置为 NO ACTION。 如果指定 CASCADE,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行更新操作。如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。如果对 Customers 表的某行执行 UPDATE 语句,并且为 Orders.CustomerID 指定 ON UPDATE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被更新行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同更新。反之,如果指定了 NO ACTION,若在 Orders 表中至少存在一行引用 Customers 表中要更新的行,那么 SQL Server 将引发一个错误并回滚 Customers 表中的更新操作。
      

  5.   

    谢谢 你 
    duanduan1122(我要做老大!!!) 
    我练习练习