删除后的T-SQL触发器

删除后的T-SQL触发器,sql,sql-server,tsql,Sql,Sql Server,Tsql,从表中删除行后需要运行触发器。 此触发器应从另一个表中删除行,其中该表上的字段的值与另一个表中已删除行的其中一列的值相匹配。如果从删除触发删除,则: create trigger trg_mainTable on dbo.mainTable after delete as begin delete from dbo.relatedTable where someColumn in ( select someColumn from

从表中删除行后需要运行触发器。
此触发器应从另一个表中删除行,其中该表上的字段的值与另一个表中已删除行的其中一列的值相匹配。

如果从删除触发删除,则:

create trigger trg_mainTable
on dbo.mainTable
after delete
as
begin
    delete 
    from dbo.relatedTable
    where someColumn in 
    (
        select someColumn
        from deleted
    )
end
go

如果触发从更新中删除:

create trigger trg_mainTable
on dbo.mainTable
after update
as
begin
    if update(someColumn)
    begin
        delete 
        from dbo.relatedTable
        where someColumn in 
        (
            select someColumn
            from deleted
        )
    end
end
go

您不能真正删除列,只能删除行。更改/清空列是一种更新。您说的“删除了哪一列”是什么意思?删除会影响所有列。您可以通过查看
deleted
表来判断行。当特定列(“字段”?)更新为空、空或零值时,OP似乎需要执行一些代码。我是对的@Jonnathandurday您有4个问题不完整或毫无意义。我想做的是捕获从特定列中删除的值,以便从另一个表中删除该值。我想我可以通过用我需要的特定列检查删除的表来实现这一点。我不买你的更新。您将其从更新触发器转换为删除触发器。让OP正确地定义问题。@BARM:根据您的评论添加了第二个答案。我不会投票否决您,您仍然在猜测。即使刚刚更改(未删除),Delete也会有一个值。让OP定义他的问题。他的问题都不清楚。我对你的努力表示赞赏,但我认为这样做不好。