Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用内部联接的SQL Server触发器_Sql_Sql Server_Triggers_Inner Join - Fatal编程技术网

使用内部联接的SQL Server触发器

使用内部联接的SQL Server触发器,sql,sql-server,triggers,inner-join,Sql,Sql Server,Triggers,Inner Join,我试图创建一个触发器,该触发器仅在类表中插入的姓氏与Coach表中列出的姓氏不匹配时触发 这是我所拥有的,但无论在表中插入什么,它似乎都会开火 CREATE TRIGGER CoachValidate ON CLASSES FOR INSERT, UPDATE AS BEGIN IF exists (SELECT * FROM inserted i INNER JOIN COACHES c ON i.lastname <

我试图创建一个触发器,该触发器仅在类表中插入的姓氏与Coach表中列出的姓氏不匹配时触发

这是我所拥有的,但无论在表中插入什么,它似乎都会开火

CREATE TRIGGER CoachValidate
ON CLASSES 
FOR INSERT, UPDATE
AS
BEGIN
    IF exists (SELECT *
               FROM inserted i
               INNER JOIN COACHES c ON i.lastname <> c.lastname)
        RAISERROR('INVAILD COACH', 10, 0)
        ROLLBACK
END

有人能帮我找到错误吗?

您在这方面使用了错误的方法。如果Coach表上的名称尚未唯一,请将其定义为唯一,并使用外键关系:

alter table coaches add constraint unq_coaches_name unique (lastname);

alter table classes add constraint fk_classes_lastname
    foreign key (lastname) references coaches(lastname);

不需要在触发器中复制数据库已经为您执行的操作。

您无法查询触发器所在的表。您不加入choaches表。你加入你的班级,反对itself@juergend噢,糟糕,我回去解决了这个问题,但我仍然收到相同的错误如果不存在,请从插入的i内部连接Coach c中选择*在i.lastname=c.lastname上,但实际上您应该为Coach表定义一个外键约束,所有这些都是多余的