如何在连接2个表的sql中创建触发器

时间:2018-01-05 18:41:23

标签: sql

我需要在sql中创建一个触发器,用于检查用户是否已回答有关特定应用程序的实际注册到该应用程序的问题。

我正在使用的表格是:

1) tblAnsweredOn ,其中包含以下列:
电子邮件(密钥),appName(密钥),questionNo(密钥),答案,answerDate

2) tblRegisteredTo ,其中包含以下列:
电子邮件(密钥),appName(密钥),registrationDate,nickName

这是我尝试的代码,但不允许我插入任何用户,无论他是否试图回答与他注册的应用程序相关的问题。

create trigger ifExistsTrigger
on [dbo].[tblAnsweredOn] after insert as
declare
@email nvarchar,
@appName nvarchar

select @email = INSERTED.email , @appName = INSERTED.AppName
from INSERTED

if not exists (select email, appName
               from [dbo].[tblRegisteredTo] 
               where email = @email
               and appName = @appName)
rollback;

1 个答案:

答案 0 :(得分:2)

您可能无法获得预期的结果,因为您将inserted伪表视为标量而不是表。您只需加入insertedtblRegisteredTo即可获得结果。

IF EXISTS (
    SELECT email, appName
    FROM inserted A
    LEFT JOIN dbo.tblRegisteredTo B
    ON A.email = B.email AND A.appName = B.appName
    WHERE B.appName IS NULL OR B.email IS NULL)
ROLLBACK