【问题标题】:Concatenate fields inside a trigger连接触发器内的字段
【发布时间】:2020-03-23 16:19:19
【问题描述】:

我想创建一个触发器来根据名字和姓氏创建电子邮件。 基本上,在填充表时,如果电子邮件为 NULL,我想自动创建 firstname.lastname@company.com 的电子邮件

这是我想出的。我知道这是把所有东西都扔掉的连接。

CREATE TRIGGER trg_assignEmail On PersonID
AFTER INSERT, UPDATE
AS
BEGIN
    UPDATE PersonID
        SET Email=
            (SELECT(RTRIM(FirstName), RTRIM(LastName)) FROM PersonID)
    WHERE Email IS NULL;
END

我收到的错误消息是Incorrect syntax near ','

当我插入 SET Email=UPPER(FirstName) 而不是 RTRIM 时,一切正常,所有 NULL 电子邮件都更改为名字,因此我对其余代码充满信心。所以我认为问题在于如何正确连接名字+姓氏的字段。

【问题讨论】:

  • 你用的是什么数据库系统?
  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称,触发器是高度特定于供应商的。请为您正在使用的数据库产品添加tag

标签: sql concatenation database-trigger


【解决方案1】:

试试这个:

CREATE TRIGGER trg_assignEmail On PersonID
AFTER INSERT, UPDATE
AS
BEGIN
    UPDATE PersonID
        SET Email= SELECT RTRIM(FirstName)+''+RTRIM(LastName) FROM PersonID
    WHERE Email IS NULL;
END

【讨论】:

    【解决方案2】:

    可以直接引用表本身的FirstName和LastName列,如下

    CREATE TRIGGER trg_assignEmail On PersonID
    AFTER INSERT, UPDATE
    AS
    BEGIN
        UPDATE PersonID
            SET Email=CONCAT(RTRIM(FirstName), RTRIM(LastName))
        WHERE Email IS NULL;
    END
    

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 2023-03-19
      • 1970-01-01
      • 2018-07-12
      • 2013-07-02
      • 2015-08-19
      • 2020-08-29
      • 1970-01-01
      • 2015-01-22
      相关资源
      最近更新 更多