如何在sql中创建连接两个表的触发器
我需要在sql中创建一个触发器,检查用户是否回答了与特定应用程序相关的问题,并且该应用程序实际上已注册 我使用的表格有: 1) tblAnsweredOn包含以下列:如何在sql中创建连接两个表的触发器,sql,Sql,我需要在sql中创建一个触发器,检查用户是否回答了与特定应用程序相关的问题,并且该应用程序实际上已注册 我使用的表格有: 1) tblAnsweredOn包含以下列: 电子邮件(键)、应用程序名(键)、问题号(键)、答案、回答日期 2) tblRegisteredTo包含以下列: 电子邮件(密钥)、appName(密钥)、注册日期、昵称 这是我尝试过的代码,但它不允许我插入任何用户,无论他是否试图回答与他注册的应用程序相关的问题 create trigger ifExistsTrigger on
电子邮件(键)、应用程序名(键)、问题号(键)、答案、回答日期 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欢迎使用堆栈溢出。请注意,在这里说“谢谢”的首选方式是投票选出好的问题和有用的答案(一旦你有足够的声誉这么做),并接受对你提出的任何问题最有用的答案(这也会给你的声誉带来一点提升)。请参阅本页,并