当前位置: 代码迷 >> Sql Server >> sqlser delete触发器的有关问题
  详细解决方案

sqlser delete触发器的有关问题

热度:16   发布时间:2016-04-24 10:01:14.0
sqlser delete触发器的问题
我的item表里有个字段是记录了这一条记录是从哪一个数据表插入过来的

我想在item表删除记录的时候,连带插入表那一条记录也删掉

触发器我这样写

declare @inno int,@name varchar(20);
     
    select @inno = inno from deleted
    
    select @name = dbenname from deleted
    
    if @inno != 0
    begin
    
    delete @name where inno = @inno
    
    end

但却提示

消息 1087,级别 16,状态 1,过程 each_del,第 25 行
必须声明表变量 "@name"。

@name我在上面不是已经声明了吗?
------解决方案--------------------

级联删除,假设你两个表 有唯一标识 ID
create trigger tri_delete
on t1
after delete
as
begin
delete from t2 
where t2.id in
(select id from deleted)
end


------解决方案--------------------
declare @inno int,@name varchar(20);
     
select @inno = inno from deleted

select @name = dbenname from deleted

if @inno != 0
begin
    DECLARE @sql varchar(100)
    SET @sql = 'delete ' + @name + ' where inno = ' + Convert(varchar(11),@inno)
    EXECUTE @sql
end
  相关解决方案