¿Por qué los comentarios de estilo C hacen que la instrucción de inserción se ejecute dos veces?
Para resumir, comencé a recibir violaciones de la clave principal ORA-00001 y rastreé el problema hasta el hecho de que algunas de misINSERT INTO
Las declaraciones se ejecutaban dos veces. Luego descubrí que los comandos ofensivos tenían un comentario de estilo C después:
WHENEVER SQLERROR EXIT FAILURE
SET ECHO OFF
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET TIMING OFF
SET TIME OFF
SET TRIMSPOOL ON
SET TRIMOUT ON
SET LINESIZE 120
SET SQLBLANKLINES ON
SET SERVEROUTPUT ON
[...]
INSERT INTO INF_FIELD (FIELD_ID, CATEGORY_ID, COLUMN_EXPRESSION, DISPLAY_NAME, SORT_ORDER) VALUES (17, 1, 'FOO.NAME', 'Name of the foo', 17);
/*This is a comment*/
Luego se solucionó fácilmente al cambiar a esta sintaxis:
--This is a comment
¿Cuál es la razón exacta por la cual/*...*/
comentarios hicieron que SQL * Plus ejecutara la declaración dos veces?