注册 登录
编程论坛 SQL Server论坛

谁能帮我看一下这段程序哪里有问题????

喜子 发布于 2010-12-22 14:53, 571 次点击
题目:删除“客户”表数据时引发的DELETE触发器。
当删除某条客户信息时,同时删除“订单”表中该客户的所有订单。
go
if exists(select name  from sysobjects
      where name='delete_kehu'and type='tr')
    drop trigger delete_kehu
go
create trigger delete_kehu on 客户
for delete
as
if exists(select *
    from deleted
    where 订单.客户id=deleted.客户id)
begin
 delete 订单  
  from 订单,deleted
  where 订单.客户id=deleted.客户id
end
4 回复
#2
筱晓绾2010-12-22 15:13
select *
    from deleted
    where 订单.客户id=deleted.客户id

delete 订单  
  from 订单,deleted
  where 订单.客户id=deleted.客户id
订单.客户id是订单表里面的字段吧.
deleted.客户id是deleted表中的字段.
执行语句时,应该需要对表进行关联...
#3
aei1352010-12-23 11:41
create trigger delete_kehu on 客户
for delete
as
if exists(select *
    from 订单,deleted
    where 订单.客户id=deleted.客户id)
begin
delete 订单  
  from 订单,deleted
  where 订单.客户id=deleted.客户id
end
#4
juejitianya2010-12-23 14:12
将函数主题改成下面这样试试:
delete from 订单  
where exists(select * from deleted 订单.客户id=deleted.客户id)
#5
qingshuiliu2010-12-24 10:40
2,3楼回答的就是我想回答的
1