【发布时间】:2015-01-22 12:13:30
【问题描述】:
长话短说,我开始遇到 ORA-00001 主键违规问题,我追查到问题是因为我的一些 INSERT INTO 语句运行了两次。然后我发现有问题的命令之后有一个 C 风格的注释:
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*/
然后通过切换到以下语法很容易解决:
--This is a comment
/*...*/ cmets 让 SQL*Plus 运行该语句两次的确切原因是什么?
【问题讨论】:
-
因为/在SQL*PLus中执行命令?
标签: oracle oracle10g sqlplus oracle-xe