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

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 中使用具有多个插入子句的高级聚合功能?

MySQL PHP插入新行,其中rowNum列值始终按日期和时间按时间顺序排列

使用 php 将多个复选框值和输入插入单个 sql 数据库

基于单个列值的循环和插入 SQL

无法使用 Python 字典作为列值执行 SQL 插入命令

当插入事件发生时,我可以将列值更新为触发器吗?