将多个列值插入单个插入值?
Posted
技术标签:
【中文标题】将多个列值插入单个插入值?【英文标题】:inserting mutiple column values into single insert value? 【发布时间】:2011-10-24 01:17:59 【问题描述】:所以我有一项大学作业,我必须在其中创建一个名为 bill_overdue 的触发器。当将 status = overdue 的行插入到表 invoice 中时,会在另一个名为 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
)。现在我知道我所做的是错误的,但我尝试添加括号围绕它等等,似乎没有什么能做我想要的。我怎样才能让它工作?有可能做我想做的事还是完全错了?
【问题讨论】:
您将六个值插入到三列中。那是行不通的。您必须使用下面给出的一种连接方法将三个值组合为一个(假设连接它们是有意义的)。 【参考方案1】:你可以使用concatenation
:new.dateissued || ', ' || :new.invoiceno || ', ' || :new.campaigntitle
【讨论】:
【参考方案2】:对于Oracle,您还可以使用CONCAT()
函数进行连接,您可以尝试
CONCAT(:NEW.DATEISSUED,:NEW.INVOICENO,:NEW.CAMPAIGNTITLE)
您可能需要转换/转换其中一些值。
【讨论】:
以上是关于将多个列值插入单个插入值?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法在 Hive 中使用具有多个插入子句的高级聚合功能?