从 varchar 转换为 numeric 时出错

Getting an error converting from varchar to numeric

我制作了一个历史 table 以及参考 table 中内置的触发函数。基于用户可能的名称更改以及记录日期。

我的触发器构建:

目标 table:

触发器函数从 table 中提取名称。

但是我在转换数据类型时遇到错误。我正在更新的所有数据都是 VARCHAR 类型的。我哪里不见了?

INSERT..VALUES 语句更改为 INSERT..SELECT 并为所有列设置别名。确保别名与目标 table 中的每一列相匹配(默认所有 NOT NULL 列),并且 它们的顺序与声明的顺序相同 。 请注意,SELECT 语句使用 patientLastNameChange table,因为没有 GROUP BYMAX() 确保只返回一行。 如果 returns NULL,我建议使用 COALESCEMAX() 结果设置为 0。然后只需添加 1 即可增加 lastNameChangeID。我认为这更具可读性。

CREATE TRIGGER patientLastNameChangeTrigger
ON patient
AFTER UPDATE
AS
BEGIN
    DECLARE @oldLastName VARCHAR(255) = (SELECT pt_lastName FROM DELETED);
    DECLARE @newLastName VARCHAR(255) = (SELECT pt_lastName FROM INSERTED);

    IF @oldLastName <> @newLastName
        INSERT INTO dbo.patientLastNameChange (lastnameChangeID, patientID, oldLastName, newLastName, datechanged)
        SELECT
        COALESCE(MAX(plnc.lastnameChangeID),0)+1 AS lastnameChangeID,
        (SELECT patientID FROM INSERTED) AS patientID,
        @oldLastName AS oldLastName,
        @newLastName AS newLastName,
        GETDATE() AS datechanged
        FROM patientLastNameChange plnc;
END;