У меня есть несколько строк для вставки в таблицу. В таблице есть некоторые ограничения, которые не выполняются для нескольких строк. Но с инструкцией INSERT ALL, когда она обнаруживает, что первая вставка с ограничением не работает, она перестает вставлять в oracle db, а остальные данные, которые являются правильными, также не вставлены. Будет ли это работать только так. Или у нас есть какой-либо метод, в который вставляются все действительные данные и игнорируются другие вставки в INSERT ALL.Инструкция INSERT ALL в Oracle, не вставляемая
ответ
, когда он обнаруживает, что первая вставка с ограничением не работает, прекращает вставку в oracle db, а остальные данные также не вставлены. Будет ли это работать только так.
Да, он предназначен для работы таким образом. Оператор INSERT ALL не сможет вставить , если ошибка в одной строке.
Например,
SQL> CREATE TABLE t(a NUMBER);
Table created.
SQL> ALTER TABLE t ADD CONSTRAINT t_unique UNIQUE(a);
Table altered.
SQL> INSERT INTO t(a) VALUES(1);
1 row created.
SQL> INSERT ALL
2 INTO t (a) VALUES (1)
3 INTO t (a) VALUES (2)
4 INTO t (a) VALUES (3)
5 SELECT * FROM dual;
INSERT ALL
*
ERROR at line 1:
ORA-00001: unique constraint (LALIT.T_UNIQUE) violated
SQL> SELECT * FROM t;
A
----------
1
Если вы хотите, чтобы другие значения должны быть вставлены, которые являются правильными, а затем положить их в качестве отдельных операторов вставки и выполнять все операторы вставки в качестве сценария.
Например,
SQL> CREATE TABLE t(a NUMBER);
Table created.
SQL> ALTER TABLE t ADD CONSTRAINT t_unique UNIQUE(a);
Table altered.
SQL> INSERT INTO t(A) VALUES(1);
1 row created.
SQL> INSERT INTO t(a) VALUES(1);
INSERT INTO t(a) VALUES(1)
*
ERROR at line 1:
ORA-00001: unique constraint (LALIT.T_UNIQUE) violated
SQL> INSERT INTO t(A) VALUES(2);
1 row created.
SQL> INSERT INTO t(A) VALUES(3);
1 row created.
SQL> SELECT * FROM t;
A
----------
1
2
3
Спасибо, я в настоящее время вставляю в качестве отдельных инструкций вставки через скрипт. Но хотелось попробовать INSERT ALL, но был неудачным из-за того, что некоторые строки имели нарушения. –
Вы можете получить обработку исключений в PL/SQL, однако в SQL оператор INSERT ALL является одной транзакцией. Либо все строки вставлены, либо нет. Это основное правило атомарности. –
- 1. Выбор столбцов в Oracle INSERT ALL Statement
- 2. Oracle INSERT ALL with from select result
- 3. INSERT ALL INTO SQL using oracle 10g
- 4. Инструкция INSERT Не вставляя
- 5. Инструкция JDBC insert не работает
- 6. Инструкция PDO Insert не работает?
- 7. INSERT ALL без выбора оператора?
- 8. Удалить All/Bulk Insert
- 9. PostgreSQL - инструкция INSERT INTO
- 10. Инструкция INSERT INTO в MySQL
- 11. Oracle INSERT ALL с SELECT дает неверную ошибку спецификации
- 12. инструкция insert в дочерней таблице
- 13. Производительность Oracle и JDBC: INSERT ALL vs prepareStatement.addBatch
- 14. Oracle - PL/SQL - INSERT ALL с SELECT as VALUES
- 15. Несколько вложений Oracle Mybatis Spring с помощью Insert All
- 16. модель не вставляемая опция выбора
- 17. Строка, не вставляемая в БД php
- 18. Вложенная форма, не вставляемая в БД?
- 19. Инструкция INSERT не работает с PDO
- 20. Инструкция INSERT просто не работает! (PHP + MYSQL)
- 21. Инструкция Mysql Insert от PHP
- 22. Ошибка синтаксиса - инструкция INSERT INTO
- 23. SQL Server: инструкция DELETE с откатом Инструкция INSERT в файл
- 24. Простая инструкция SQL в Oracle
- 25. Oracle bind all $ _POST
- 26. Инструкция INSERT INTO с SELECT ... IN error
- 27. Увеличение значения в mutliple строке Инструкция INSERT
- 28. CTE With Insert В Oracle
- 29. Инструкция INSERT в PL/SQL FUNCTION
- 30. Инструкция INSERT INTO для доступа в ASP.NET
вы можете отправить запрос? –
Как уже упоминалось выше, пожалуйста, напишите инструкцию DDL для всех таблиц, в которые вы пытаетесь включить INSERT, а также инструкцию INSERT. –