将多个列值插入单个插入值?

时间:2011-10-24 01:17:59

标签: sql database oracle plsql

所以我有这个大学作业,我必须创建一个名为bill_overdue的触发器。当status = overdue的行插入表发票时,会在另一个名为message的表中插入一行。

CREATE SEQUENCE AUTOINCREMENTMESSAGE
MINVALUE 100
START WITH 101
INCREMENT BY 1
CACHE 10
;

CREATE OR REPLACE TRIGGER BILL_OVERDUE
BEFORE INSERT ON INVOICE
FOR EACH ROW
WHEN (NEW.STATUS = 'Overdue')
BEGIN
INSERT INTO MESSAGE (MESSAGENO,MESSAGEDATE,ORIGIN,MESSAGE)
VALUES (AUTOINCREMENTMESSAGE.nextval,SYSDATE,USER,:NEW.DATEISSUED,:NEW.INVOICENO,:NEW.CAMPAIGNTITLE);
END;
/

现在您可以看到我想将:new.dateissued:new.invoiceno:new.campaigntitle添加到单个字段(message)中。现在我知道我所做的就是错了,但我试过在它周围添加括号等,似乎什么也没做我想要的。我如何让它工作?有可能做我想做的事情或我完全错了吗?

2 个答案:

答案 0 :(得分:7)

您可以使用concatenation

:new.dateissued || ', ' || :new.invoiceno || ', ' || :new.campaigntitle

答案 1 :(得分:3)

对于Oracle,您也可以使用CONCAT()函数进行连接,然后尝试

CONCAT(:NEW.DATEISSUED,:NEW.INVOICENO,:NEW.CAMPAIGNTITLE)

您可能必须转换/转换其中一些值。