我现在要级联删除数据,比如表1是公司表company 表2是员工表person
company person
id depart p_number id name depart_id
1 软件部 2 1 张三 1
2 财务部 0 2 李四 1例如张三和李四都是软件部的
我想在删除部门的时候 把部门里面的员工都删除掉,每次执行时,部门人数1人时,正常删除,在两个人以上 就都报下面的错:
“异常详细信息: System.Data.SqlClient.SqlException: 子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”
触发器里面是这样的:
CREATE TRIGGER Del_depart ON dbo.company
FOR DELETE
AS
delete from person where departmentnumber in(select id from deleted)
我试过设定外键约束后,用2000的级联删除功能,效果和使用这个触发器一样的,都是两人以上不能删除
请问触发器怎么写,可以同时删除多人呢,哪位大虾帮帮我啊
company person
id depart p_number id name depart_id
1 软件部 2 1 张三 1
2 财务部 0 2 李四 1例如张三和李四都是软件部的
我想在删除部门的时候 把部门里面的员工都删除掉,每次执行时,部门人数1人时,正常删除,在两个人以上 就都报下面的错:
“异常详细信息: System.Data.SqlClient.SqlException: 子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。”
触发器里面是这样的:
CREATE TRIGGER Del_depart ON dbo.company
FOR DELETE
AS
delete from person where departmentnumber in(select id from deleted)
我试过设定外键约束后,用2000的级联删除功能,效果和使用这个触发器一样的,都是两人以上不能删除
请问触发器怎么写,可以同时删除多人呢,哪位大虾帮帮我啊
这句错误提示肯定是别处报的
我现在没有写删除person是语句,程序里面只有删除 部门的语句,就是报这个错
就这么一句,得到要删除的部门的ID 就执行删除操作:
string del_sql = string.Format("delete from company where id ={0}",del_ID);
删除员工的语句已经被我屏蔽掉了,本来想依靠触发器来删除员工的,可是不会啊
FOR DELETE
AS
delete person 去掉from
where departmentnumber in(select id from deleted)
delete from ManagementSystem.dbo.company where id = 5
结果提示:
服务器: 消息 512,级别 16,状态 1,过程 number,行 5
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
执行别的语句没有错误,而且还是依然只可以删除 只有一个员工的部门
string del_sql = string.Format("delete from company where id ={0}",del_ID);
下面就是连接数据库,连接后执行下面语句:
SqlCommand Comm = new SqlCommand(del_sql,MyConn);
Comm.ExecuteNonQuery();
应该没什么错误吧,因为删除只有一个人所在的部门是没有问题的,只是两人以上,就报错了
我也不知道我哪错了,郁闷啊
那个number触发器是用来删除员工时 让我的部门人员数量减一个的
代码如下:
CREATE TRIGGER number ON dbo.person
FOR DELETE
ASupdate company set staffnumber=staffnumber-1 where ID in(select departmentnumber from deleted)
本来最后一句是“where ID =”的,改成in 就好了 没有错误了 一切正常
可是我不太明白什么时候用 “=” 什么时候用in啊
你能给我讲讲吗
我遇见N此这种问题了
在查询分析其中在好好测试