MSSQL-对于删除触发器,无法与内连接起来



有人可以解释为什么这起作用 -

CREATE TRIGGER [dbo].[T_tskmst_D]
   ON  [dbo].[tskmst]
   FOR DELETE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- Insert statements for trigger here
        insert into [database].[dbo].[tskmst] (
            tskmst_revtm, tskmst_revtype, tskmst_id, tskmst_name, tskmst_desc,
            tskmst_type, owner_id, tskmst_public, tskmst_lstchgtm,
            nodmst_id, servicemst_id)
        select GETDATE(), 'D', d.tskmst_id, d.tskmst_name, d.tskmst_desc,
            d.tskmst_type, d.owner_id, d.tskmst_public, d.tskmst_lstchgtm,
            d.nodmst_id, d.servicemst_id
        from deleted d
END

但这不是 -

CREATE TRIGGER [dbo].[T_tskmst_D]
   ON  [dbo].[tskmst]
   FOR DELETE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- Insert statements for trigger here
        insert into [database].[dbo].[tskmst] (
            tskmst_revtm, tskmst_revtype, tskmst_id, tskmst_name, tskmst_desc,
            tskmst_type, owner_id, tskmst_public, tskmst_lstchgtm,
            nodmst_id, servicemst_id)
        select GETDATE(), 'D', d.tskmst_id, d.tskmst_name, d.tskmst_desc,
            d.tskmst_type, d.owner_id, d.tskmst_public, d.tskmst_lstchgtm,
            d.nodmst_id, d.servicemst_id
        from deleted d
                inner join tskmst tm on tm.tskmst_id = d.tskmst_id
END

我很困惑为什么删除上的内部加入会阻止查询能够复制信息?是因为在内部连接发生之前已删除数据吗?是否可以在删除发生之前复制数据?

我可以从已删除中完成,但问题是一些表包含文本列(不要问),所以我不能从删除中插入其他列,而是缺少某些列。

它不起作用,因为如果它用于删除触发器。这意味着表格中已经删除的行不存在。

当您一无所获时,您总是一无所获。

最新更新