如果 oracle 不存在则插入
Insert if not exits oracle
我想在 table 中插入一条记录,以防它不存在。
INSERT INTO table
(column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4
FROM RECEPCION_ELEMENTOS re
WHERE NOT EXISTS (SELECT 1
FROM table re2
WHERE re.column1 = re2.column1
AND re.column2 = re2.column2
AND re.column3 = re2.column3
AND re.column4 = re2.column4);
在互联网上搜索,我已经建立了这个查询但它不起作用,我收到这个错误
Error SQL: ORA-00947: no hay suficientes valores
00947. 00000 - "not enough values"
并且此查询缺少“VALUES”。这是正确的吗?
有帮助吗?
存在的逻辑对我来说实际上看起来完全有效。问题是您的插入指定了 6 个目标列,但您的 select 只提供了 4 个列。也许以下其中一项是您打算在此处执行的操作:
INSERT INTO table (column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4, re.column5, re.column6
FROM RECEPCION_ELEMENTOS re
或
INSERT INTO table (column1, column2, column3, column4)
SELECT re.column1, re.column2, re.column3, re.column4
FROM RECEPCION_ELEMENTOS re
您仍然必须使用逻辑(select 中有 6 列)。如果使用 select 中较少的列,则会抛出错误
INSERT INTO table
(column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4,re.column5,re.column6
FROM RECEPCION_ELEMENTOS re
WHERE NOT EXISTS (SELECT 1
FROM table re2
WHERE re.column1 = re2.column1
AND re.column2 = re2.column2
AND re.column3 = re2.column3
AND re.column4 = re2.column4);
查看演示 - https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=ec9b36db802c7e2691b53edc994cbbb6
另一件事,希望您实际上没有使用“table”作为您的 table 名称(这是一个保留关键字),因此建议使用其他名称。在我的演示中,我使用了“Tab”来代替。
我想在 table 中插入一条记录,以防它不存在。
INSERT INTO table
(column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4
FROM RECEPCION_ELEMENTOS re
WHERE NOT EXISTS (SELECT 1
FROM table re2
WHERE re.column1 = re2.column1
AND re.column2 = re2.column2
AND re.column3 = re2.column3
AND re.column4 = re2.column4);
在互联网上搜索,我已经建立了这个查询但它不起作用,我收到这个错误
Error SQL: ORA-00947: no hay suficientes valores
00947. 00000 - "not enough values"
并且此查询缺少“VALUES”。这是正确的吗?
有帮助吗?
存在的逻辑对我来说实际上看起来完全有效。问题是您的插入指定了 6 个目标列,但您的 select 只提供了 4 个列。也许以下其中一项是您打算在此处执行的操作:
INSERT INTO table (column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4, re.column5, re.column6
FROM RECEPCION_ELEMENTOS re
或
INSERT INTO table (column1, column2, column3, column4)
SELECT re.column1, re.column2, re.column3, re.column4
FROM RECEPCION_ELEMENTOS re
您仍然必须使用逻辑(select 中有 6 列)。如果使用 select 中较少的列,则会抛出错误
INSERT INTO table
(column1, column2, column3, column4, column5, column6)
SELECT re.column1, re.column2, re.column3, re.column4,re.column5,re.column6
FROM RECEPCION_ELEMENTOS re
WHERE NOT EXISTS (SELECT 1
FROM table re2
WHERE re.column1 = re2.column1
AND re.column2 = re2.column2
AND re.column3 = re2.column3
AND re.column4 = re2.column4);
查看演示 - https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=ec9b36db802c7e2691b53edc994cbbb6
另一件事,希望您实际上没有使用“table”作为您的 table 名称(这是一个保留关键字),因此建议使用其他名称。在我的演示中,我使用了“Tab”来代替。