sql - ORA-02264 : name already used by an existing constraint

标签 sql oracle oracle10g

我正在处理 SQL,但在创建表时遇到问题! 这是我的代码:

CREATE TABLE Voucher_Types
(
    ID Number(3, 0),
    Abbreviation VarChar(2),
    Voucher_Type VarChar(100),
    EntryBy VarChar(25),
    EntryDate Date,
    CONSTRAINT ID_PK Primary Key(ID)
);

我收到以下错误,
ORA-02264: 名称已被现有约束使用
我使用的是Oracle10g
我浏览了一下并找到了一些主题,但它们没有帮助我,有人可以帮助我解决这个问题吗!提前致谢..!

最佳答案

您还有另一个表,该表已经具有名称为 ID_PK 的约束。

如果你想知道它是哪个表,你可以尝试

select owner, table_name from dba_constraints where constraint_name = 'ID_PK';

很可能,您复制了 create table 语句,但没有更改主键的约束名称。

通常认为将表名称包含在约束名称中是一种良好的做法。原因之一就是为了防止这种“错误”。

因此,根据您的情况,您可能会使用

CREATE TABLE Voucher_Types
(
   ... 
   CONSTRAINT Voucher_Types_PK Primary Key(ID)
);

更新为什么同一个约束名称不能使用两次? (根据评论中的问题):这正是因为它是标识约束的名称。如果您在运行的系统中违反了约束,您想知道它是哪个约束,因此您需要一个名称。但如果该名称可以引用多个约束,则该名称没有特殊用途。

关于sql - ORA-02264 : name already used by an existing constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089212/

相关文章:

sql - T-SQL存储过程NULL输入值导致select语句失败

oracle - 受回滚影响的行数

带有 substr 的 Oracle 选择查询

SQL查找相似内容

MySql 查询从给定表获取页面使用情况

python - 为什么使用 cx_Oracle 插入脚本挂起

windows - Oracle tns 监听器错误

excel - 我们是否有任何允许从数据库表生成 excel 文件的开源工具?

java - 在日期字段上进行时间范围搜索的 hibernate 条件

php - 一个用户可以更新而其他用户不能选择吗