如何实现删除带有外键的表 hdhai9451(New New People---新新人类): 谢谢你。可以删除了。不过我想 能不能 通过对一个表操作 就把其它有外键的的表的 数据一起操作了。比如 我对student表中‘991101’的数据要删除,又没有能一起把sc表中数据一起删除的方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的这两个表是不是student 中的sno为主键,而在sc中的sno为student表的外键,如果是这样的话,此时,管理系统会对存在主建的表实施保护即当你主表中的某条记录时,只要外键表存在它的相应记录时,则不允许删除,主要是为了实施数据完整性。你要是删除外表中的记录时,则没有限制。如果你此时一定要删除主表的某条记录,而外表又存在它的相关记录时,完成这样的操作你可以创建instead of 触发器来实现/ xiaonvjing(飞扬) 你能给出一个用 instead of 触发器 做的例子吗? 这样做就可以了:1。企业管理器打开你建有外键的表--右击表--设计表--在上方点开’管理约束‘--将级连删除和级连更新的沟打上就可以了2。查询分析器alter table scaddconstraint forei foreign key(sno) REFERENCES student(sno)ON DELETE CASCADE ON UPDATE CASCADE 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 表中的更新操作。 谢谢 你 duanduan1122(我要做老大!!!) 我练习练习 SQL SERVER2008 error:26错误 请教 简单问题求助! 简单的类型转换 求教列变行的sql,已经查过以前的帖子,没找到解决方案 从外网访问内网的SQLSERVER的问题 SQL 多表查询问题求大神指点 开发一个考勤系统,采用什么方案才能防止“请人代打考勤”这各现象??(注:不采用指纹识别) 数据导入SQLSERVER,请各路高手帮忙,兄弟万分感谢。 生产数据库,部分工序比较卡!清空一下缓存就好了......... 求触发器 order by 里的列也可以是没有出现在select列表中,这个有什么意义?
如果是这样的话,此时,管理系统会对存在主建的表实施保护
即当你主表中的某条记录时,只要外键表存在它的相应记录时,则不允许删除,主要
是为了实施数据完整性。
你要是删除外表中的记录时,则没有限制。如果你此时一定要删除主表的某条记录,而外表又存在它的相关记录时,完成这样的操作
你可以创建instead of 触发器来实现/
你能给出一个用 instead of 触发器 做的例子吗?
1。企业管理器
打开你建有外键的表--右击表--设计表--在上方点开’管理约束‘--将级连删除和级连更新的沟打上就可以了
2。查询分析器
alter table sc
add
constraint forei foreign key(sno)
REFERENCES student(sno)
ON DELETE CASCADE
ON UPDATE CASCADE
duanduan1122(我要做老大!!!)
我练习练习