【发布时间】:2020-06-11 12:27:10
【问题描述】:
所以我有这个代码和简单的两个表 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:唯一约束 (SQL_XAKKMDKZQBPBDDQFTDEXENGDH.SYS_C0025290829) 违反 ORA-06512:在“SYS.DBMS_SQL”第 1721 行
我认为是因为我之前插入的这一行:
insert into GGroup values (
'A/3/54',
1608,
'ISM223',
'Data Warehouse & Data Mining',
'Dr. Yasser Al-Mshhor'
);
我该如何解决这个问题?我对sql不太了解
【问题讨论】:
-
因为主键约束。
-
GGroup的主键看起来不正确。但是你没有解释你的数据,你试图代表什么,或者给出样本数据,所以很难提出建设性的建议。 -
如果你想按 Id 插入重复数据,你必须从 id 列中删除主键。在 Id 上添加索引以按 Id 更快地搜索行也是一个好主意。
-
GGROUP 表在 CLASSROOM 上有一个主键。这意味着您只能在表中拥有一个 CLASSROOM
'A/3/54'的实例。为什么要拥有两个或更多?似乎您的数据模型错误或您的应用程序逻辑错误。 -
在考虑发布之前,请阅读手册并在谷歌上搜索任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括和不包括您的特定名称/字符串/数字,“网站: stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。请在代码问题中给出minimal reproducible examplehelp center
标签: sql oracle database-design sql-insert primary-key