有两个表,建立了外键的关系,我设置了一个触发器在删除主表中的数据的时候选删除了从表中的,结果出现的现象是只有当从表中在对应的主表键下只有一条数据的时候才能成功,是什么原因?如:
表1:
name id1
1111 1
表2:
newname id2 id1
22222 1 1
它们的外键是id1,我在表1中建了触发器,删除它的数据的时候选删除了第二个表中的对应主键的数据,在现在这种情况下如果我在表1中用delete 表1 where id1=1的话就能成功,表二中对应为id1的数据行删除,一切正常,但是如果我的表二是:
newname id2 id1
22222 1 1
22asfd 2 1
那么就会出现错误,提示说是外键冲突,就是上面说的,只能在表二中有一个数据对应id1,不知道是什么原因,请高手指教,谢谢.
表1:
name id1
1111 1
表2:
newname id2 id1
22222 1 1
它们的外键是id1,我在表1中建了触发器,删除它的数据的时候选删除了第二个表中的对应主键的数据,在现在这种情况下如果我在表1中用delete 表1 where id1=1的话就能成功,表二中对应为id1的数据行删除,一切正常,但是如果我的表二是:
newname id2 id1
22222 1 1
22asfd 2 1
那么就会出现错误,提示说是外键冲突,就是上面说的,只能在表二中有一个数据对应id1,不知道是什么原因,请高手指教,谢谢.
解决方案 »
- 在数据库里计算和
- 关于SQLserver2008中批量数据更新表中的某一字段的值,字段类型为datetime,想要只修改年月日,不修改时分秒
- 面向对象实现了了三个接口
- 谁能帮我说明insert的特殊用法
- 我是一个刚学SQL的菜鸟,请各位大虾帮我一下了
- 请问 zjcxc(邹建): "sp_msforeachtable"怎么找不到?
- datetime能存时间差吗?
- 怎么用游标获取数据!!
- 急啊!做的存储过程在VB中没有返回值,是不是使用嵌套存储过程的原因。
- exec 语句执行了一个sql语句,产生了一个3条记录的表,我怎么把他的所有字段的字符连接起来并print出来或导入到一个文本里面
- 悲剧的触发器问题
- sql 2005 如何建立索引
我的触发器是类似:
create trigger deletet1
on t1
instead of delete
as
declare @id int
select @id=id1 from deleted
delete t2 where id1=@id
delete t1 where id1=@id
要怎么改?