我在SQL服务器方面遇到问题,我需要创建一个以这种方式工作的触发器:
每次我将信息插入 tblNotInterest 时(在表格内我有两列"电子邮件 1"和"电子邮件 2"(。触发器需要检查"email1"和"email2"是否已存在于名为tblListOf的不同表中。如果它们存在,我需要删除找到它们的行。
也许你可以做这样的事情:
DELETE FROM tblListOf
WHERE EXISTS (SELECT * FROM tblNotInterested
WHERE tblNotInterested.email1 = tblListOf.email1 and tblNotInterested.email2 = tblListOf.email2)
插入和删除的表可能非常有用,但它们绝对是买家要注意的,因为......
- 他们并不总是适合简单的文档
- 它们对客户端应用程序不可见
- 由于昂贵的锁,它们可能存在性能或可扩展性问题
话虽如此,我相信下面的代码应该适用于这种情况。 最后一个警告/问题可能是围绕两个表中的可为空的列。 如果 email1 或 email2 在任何表上都可为空,我会考虑重新评估此代码。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.trig_i_tblNotInterested_MatchingEmail1AndEmail2
ON dbo.tblNotInterested
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DELETE L
FROM dbo.tblListOf L
INNER JOIN inserted ins
ON L.email1 = ins.email1
AND L.email2 = ins.email2
END
GO