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

如何在sql中创建连接两个表的触发器,sql,Sql,我需要在sql中创建一个触发器,检查用户是否回答了与特定应用程序相关的问题,并且该应用程序实际上已注册 我使用的表格有: 1) tblAnsweredOn包含以下列: 电子邮件(键)、应用程序名(键)、问题号(键)、答案、回答日期 2) tblRegisteredTo包含以下列: 电子邮件(密钥)、appName(密钥)、注册日期、昵称 这是我尝试过的代码,但它不允许我插入任何用户,无论他是否试图回答与他注册的应用程序相关的问题 create trigger ifExistsTrigger on

我需要在sql中创建一个触发器,检查用户是否回答了与特定应用程序相关的问题,并且该应用程序实际上已注册

我使用的表格有:

1) tblAnsweredOn包含以下列:
电子邮件(键)、应用程序名(键)、问题号(键)、答案、回答日期

2) tblRegisteredTo包含以下列:
电子邮件(密钥)、appName(密钥)、注册日期、昵称

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

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;

您可能没有得到预期的结果,因为您将
插入的
伪表视为标量而不是表。您只需将
inserted
tblRegisteredTo
加入即可获得结果

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

您使用的是什么数据库管理系统?您能提供表的DDL语句和一些示例数据来说明您遇到的问题吗?@agni欢迎使用堆栈溢出。请注意,在这里说“谢谢”的首选方式是投票选出好的问题和有用的答案(一旦你有足够的声誉这么做),并接受对你提出的任何问题最有用的答案(这也会给你的声誉带来一点提升)。请参阅本页,并