所以我有这个大学作业,我必须创建一个名为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
)中。现在我知道我所做的就是错了,但我试过在它周围添加括号等,似乎什么也没做我想要的。我如何让它工作?有可能做我想做的事情或我完全错了吗?
答案 0 :(得分:7)
您可以使用concatenation
:new.dateissued || ', ' || :new.invoiceno || ', ' || :new.campaigntitle
答案 1 :(得分:3)
对于Oracle,您也可以使用CONCAT()
函数进行连接,然后尝试
CONCAT(:NEW.DATEISSUED,:NEW.INVOICENO,:NEW.CAMPAIGNTITLE)
您可能必须转换/转换其中一些值。