我正在SQL Server上使用HeidiSQL,试图创建一个插入后触发器,这是代码。

CREATE TRIGGER TR_After_Insert_User ON User1 AFTER INSERT
AS
BEGIN
    declare @userName varchar(24)
    declare @userLName varchar(20)
    declare @userSex varchar(10)

    select @userName = i.name from inserted i
    select @user1LName = i.lastname from inserted i
    select @userSex = i.gender from inserted i

    IF @userSex = 'Male'
       @userSex = 'M'
    ELSE
        @userSex = 'F'

    INSERT INTO db2.dbo.user2(name, lastname, gender)
    VALUES (@legajoName, @legajoName, @legajoSexo)
END


我得到的错误:


'@userSex'附近的语法不正确


我已经尝试过不使用IF语句的情况,并且可以正常工作,所以问题就在那里。但是我需要那句话,因为第二个表中的“性别”字段为“字符”类型。

最佳答案

您错过了SET

IF @userSex = 'Male'
   SET @userSex = 'M'
ELSE
   SET @userSex = 'F'

在SQL中,这是无效的语法,无法为变量@userSex = 'M'分配值。
参考
SET @local_variable

将先前使用DECLARE @local_variable语句创建的指定局部变量设置为给定值。
设置{{@ @local_variable =表达式}

10-05 19:01