所以我有这个代码和简单的两个表 1-G群 2-时间表
这是他们的代码:
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 中插入了行!
但现在我正在尝试插入这一行
insert into GGroup values (
'A/3/54',
1608,
'ISM223',
'Data Warehouse & Data Mining',
'Dr. Yasser Al-Mshhor'
);
我得到了这个错误:
ORA-00001: unique constraint (SQL_XAKKMDKZQBPBDDQFTDEXENGDH.SYS_C0025290829) violated ORA-06512: at "SYS.DBMS_SQL", line 1721
我认为这是因为我之前插入的这一行:
insert into GGroup values (
'A/3/54',
1608,
'ISM223',
'Data Warehouse & Data Mining',
'Dr. Yasser Al-Mshhor'
);
我该如何解决这个问题?我对sql不是很了解
最佳答案
正如其他人在上面的回答中所指出的那样 - 您遇到此问题是因为您在 GGroup 中使用 ClassRoom 列作为 Primary Key 表脚本,即 主键 (ClassRoom)
。
什么是主键?
- 一张表只能有一个主键。
- PRIMARY KEY 约束唯一标识表中的每条记录。
- 主键必须包含 UNIQUE 值,不能包含 NULL 值。
这意味着您不能在 ClassRoom 列中插入重复值,即 A/3/54
。解决此错误的最简单方法之一是添加另一列,例如GroupId 通过更改或删除表。
注意:如果 GGroup 表中有很多行,则使用 ALTER TABLE(已在之前的答案中显示)语句而不是使用 DROP TABLE 语句。
第一步:
DROP TABLE GGroup;
第 2 步:
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
错误。
关于sql - 我如何允许sql中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434122/