sql - 如何修复 SQL 错误 : ORA-00001: unique constraint (ALERTS2. PK_UP_MODULE_MASTER) violated

标签 sql oracle

当我尝试插入时出现错误,重试几次后终于插入,没有任何错误。

SQL Error: ORA-00001: unique constraint (ALERTS2.PK_UP_MODULE_MASTER) violated.

*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.

插入语句:

INSERT INTO up_module_master 
            ( 
                        mr_id, 
                        mr_name, 
                        mr_desc, 
                        mr_parent, 
                        created_by, 
                        created_date, 
                        modified_date, 
                        module_type, 
                        module_link, 
                        link_text, 
                        help_text shortcut_link, 
                        shortcut_name, 
                        shortcut_flag, 
                        module_display_name 
            ) 
SELECT max(u1.mr_id)+1, 
       'Notification Engine', 
       'Notification Engine Module', 
       0,1, 
       SYSDATE, 
       '', 
       '', 
       '../../jalsweb/Logout.jsp', 
       'HTTP', 
       '', 
       '', 
       '', 
       0, 
       'Notification Engine' 
FROM   up_module_master u1;

下面是表格定义:

CREATE TABLE "up_module_master" 
  ( 
     "mr_id"               NUMBER (10, 0) NOT NULL ENABLE, 
     "mr_name"             VARCHAR2 (200 byte) NOT NULL ENABLE, 
     "mr_desc"             VARCHAR2 (250 byte), 
     "mr_parent"           NUMBER, 
     "created_by"          NUMBER, 
     "created_date"        TIMESTAMP (6), 
     "modified_date"       TIMESTAMP (6), 
     "module_type"         VARCHAR2 (100 byte), 
     "module_link"         VARCHAR2 (200 byte), 
     "link_text"           VARCHAR2 (250 byte), 
     "help_text"           VARCHAR2 (250 byte), 
     "shortcut_link"       VARCHAR2 (400 byte), 
     "shortcut_name"       VARCHAR2 (100 byte), 
     "shortcut_flag"       NUMBER, 
     "module_display_name" VARCHAR2 (100 byte), 
     "audit_type"          VARCHAR2 (100 byte), 
     "service_id"          NUMBER, 
     "module_regis_type"   NUMBER DEFAULT 1, 
     CONSTRAINT "PK_UP_MODULE_MASTER" PRIMARY KEY ("mr_id"), 
     CONSTRAINT "UP_MODULE_MASTER_UP_MODUL_FK1" FOREIGN KEY ("mr_parent") 
     REFERENCES "up_module_master" ("mr_id") ENABLE 
  ) 

最佳答案

看起来 MR_ID 不是身份种子。如果另一个进程试图与您同时插入一条记录,则两者都将尝试插入相同的 ID,您将收到此错误。我建议您将列更改为自动递增。如果使用 12 之前的版本,则需要创建一个序列,然后创建一个触发器;如果使用更高版本,则需要创建标识列:

Oracle: how to create an identity column?

上面的链接包含执行此操作的所有详细信息。

关于sql - 如何修复 SQL 错误 : ORA-00001: unique constraint (ALERTS2. PK_UP_MODULE_MASTER) violated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982279/

相关文章:

oracle - 如何通过立即执行传播全局定义的异常?

ruby-on-rails - Docker Compose:将环境变量暴露给链接服务

java - 查找在 Java 代码中保持打开状态的数据库连接的最佳方法是什么?

php - PHP 和 mySQL 中的多个 SELECT 查询和循环结果

sql - SQL Server 中联接子查询的效率

sql - SELECT 语句从不同的表中获取所有列

java.sql.SQLException:参数 IN 或 OUT 缺失,位于 l'index::3

r - Spark 错误 - 小数精度 39 超过最大精度 38

sql - Oracle 语法错误

MySQL 按数字顺序排序