0
有人可以解释为什么这工程 -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
我很困惑,为什么一个内部联接在删除将停止查询能够复制信息?是否因为在内部连接发生之前数据被删除?发生删除之前是否可以复制数据?
我可以从删除,但问题是一些表包含文本列(不问),所以我不能从删除插入否则我缺少某些列。
Thnx这就是我的想法。请问,那么有没有办法从删除的东西中复制文本列?如果我从插入到删除,我必须排除文本列。 – whoisearth
我不明白为什么你必须排除文本列。 – GriGrim
,因为如果您尝试插入或插入使用插入或删除的文本列,则失败。 ntext不是可以使用的有效列。 – whoisearth