首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在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

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
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60434122

复制
相关文章

相似问题

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