首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

简单的有关问题请问

2012-03-25 
简单的问题请教createtriggerdelete_employeeonemployeefordeleteasdeclare@typeidvarchar(10)selecttypei

简单的问题请教
create   trigger   delete_employee   on   employee
for   delete  
as  
declare   @typeid   varchar(10)
select   typeid=@typeid   from   deleted
delete   from   loginuser   where   etypeid=@typeid
go

这个触发器里的。select   typeid=@typeid   from   deleted   这句话是什么意思呢,好久都没太明白.deleted是一个表还是什么其它的。


[解决办法]
create trigger delete_employee on employee
for delete
as
declare @typeid varchar(10)
select @typeid =typeid from deleted
delete from loginuser where etypeid=@typeid
go

这个触发器里的。select typeid=@typeid from deleted 这句话是什么意思呢,好久都没太明白.deleted是一个表还是什么其它的。
-----------------------------------------
deleted 是產生的一個臨時表,觸發結束後自動刪除
裡面紀錄的是 表刪除前的數據
select @typeid=typeid from deleted
就是把刪除前的 typeid 值給 變量 @typeid
建議該trigger 這樣寫
create trigger delete_employee on employee
for delete
as
delete loginuser from loginuser ,deleted where loginuser.etypeid=deleted.typeid
go


[解决办法]
create trigger delete_employee on employee
for delete
as
declare @typeid varchar(10)
select typeid=@typeid from deleted
delete from loginuser where etypeid=@typeid
go
-----------------------------------------------
应该:
create trigger delete_employee on employee
for delete --在删除表employee里的记录时触发
as
declare @typeid varchar(10)
select @typeid=typeid from deleted --取得删除记录的typeid
delete from loginuser where etypeid=@typeid --删除loginuser表中etypeid=@typeid的记录
go


热点排行