首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在sql中允许重复值?

如何在sql中允许重复值?
EN

Stack Overflow用户
提问于 2020-02-27 21:16:39
回答 5查看 430关注 0票数 2

所以我有这个代码和两个简单的表1-GGroup 2-时间表

这是它们的代码:

代码语言:javascript
运行
复制
CREATE TABLE GGroup(
    ClassRoom varchar(7),
    GroupNum number(5),
    C_Code varchar(6),
    C_Name varchar(35), Field
    Teacher varchar(30),
    primary key (ClassRoom)
);

CREATE TABLE TimeTable(
    ClassRoom varchar(7),
    StudentID number(9),
    FirstName varchar(30),
    LastName varchar(30),
    primary key(ClassRoom, StudentID),
    foreign key(ClassRoom) references GGroup(ClassRoom)
);

而且我已经用np在表GGroup中插入了行!

但是现在我正在尝试插入这一行

代码语言:javascript
运行
复制
insert into GGroup values (
    'A/3/54', 
    1608, 
    'ISM223', 
    'Data Warehouse & Data Mining', 
    'Dr. Yasser Al-Mshhor'
);

我得到了这个错误:

ORA-00001:唯一约束

(SQL_XAKKMDKZQBPBDDQFTDEXENGDH.SYS_C0025290829)违反了ORA-06512: at "SYS.DBMS“_SQL",第1721行

我想这是因为我之前插入的这行:

代码语言:javascript
运行
复制
insert into GGroup values (
    'A/3/54', 
    1608, 
    'ISM223', 
    'Data Warehouse & Data Mining', 
    'Dr. Yasser Al-Mshhor'
);

我怎么才能解决这个问题呢?我对sql了解不多

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-02-29 06:27:43

正如其他人已经在上面的答案中指出的那样-你之所以会有这个问题,是因为你正在使用ClassRoom列作为主键在您的GGroup表脚本,即primary key (ClassRoom)

主键是什么?

  • 一个表只能有一个主键。
  • PRIMARY KEY约束唯一标识表中的每条记录。
  • 主键必须包含唯一值,并且不能包含空值。

这意味着您不能插入重复的值,即A/3/54在ClassRoom列。解决此错误的最简单方法之一是添加另一个列,例如GroupId通过更改或删除该表。

注意:如果GGroup表中有很多行,那么使用ALTER table (已经在前面的答案中说明)语句,而不是使用DROP TABLE语句。

步骤1:

代码语言:javascript
运行
复制
DROP TABLE GGroup;

步骤2:

代码语言:javascript
运行
复制
CREATE TABLE GGroup(
    GroupId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
    ClassRoom varchar(7),
    GroupNum number(5),
    C_Code varchar(6),
    C_Name varchar(35), Field
    Teacher varchar(30)
);

完成这两个步骤后,您就可以插入重复的值,而不会获得任何值ORA-00001: unique constraint错误。

票数 3
EN

Stack Overflow用户

发布于 2020-02-27 21:22:13

表格GGroup定义列ClassRoom作为主键。这明确禁止此列中存在重复项。您的代码失败,因为您正在尝试使用ClassRoom

'A/3/54',而tabe中已存在该列中具有相同值的另一条记录。

可能的选项:

  • 将该列的主键更改为其他值,以便更好地表示您的用例
  • 更改的值ClassRoom将新插入的记录中的值设置为表中尚不存在的值
  • 忽略此错误:由于两条记录似乎完全重复,这可能是您在这里的最佳选择
票数 2
EN

Stack Overflow用户

发布于 2020-02-27 21:33:40

主键,必须唯一,您的教室设置为主键,不允许添加两次。

设置另一个变量(如递增的id)作为主键,这样您就可以更频繁地添加房间。

问题是,为什么要两次添加相同的信息?

如果要将房间填充到时间表中,则不需要在GGroup中多次添加房间

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60434122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档