我有'SchoolYearTeachingDays'表,其中只有一列,其中是日期:
CREATE TABLE SchoolYearTeachingDays (
aDate DATE PRIMARY KEY
UNIQUE
);
我用很多唯一的日期填充了它。这些日期不包括星期日和星期六的日期。 我还有另一个“ TeachingSaturdaysInSchoolYear”表:
CREATE TABLE TeachingSaturdaysInSchoolYear (
id INT PRIMARY KEY
UNIQUE,
aDate DATE,
TimetableForTheDay TEXT
);
此表仅包含两个日期。这两个日期是两个星期六。在这两个星期六,我们必须教学生。 当我对此表执行以下查询时,我得到了两条记录:
2018-04-14
2018-05-05
我想将这两个日期从“ TeachingSaturdaysInSchoolYear”表插入“ SchoolYearTeachingDays”表。
我正在尝试以下查询:
INSERT INTO SchoolYearTeachingDays
SELECT aDate FROM TeachingSaturdaysInSchoolYear
;
但是我得到这个错误: 错误:唯一约束失败:SchoolYearTeachingDays.aDate
我的这个查询如何工作,为什么会出现此错误?我如何实现我的目标?
最好,朋友
答案 0 :(得分:1)
您通过向表SchoolYearTeachingDays中插入重复值来违反唯一约束。
要解决该错误,请置于非条件状态,这样不会将已插入的日期再次插入SchoolYearTeachingDays表中。
示例
INSERT INTO SchoolYearTeachingDays
SELECT aDate FROM TeachingSaturdaysInSchoolYear T WHERE T.aDate NOT IN (SELECT S.aDate FROM SchoolYearTeachingDays S)