Чтобы вставить строку в таблицу из другой таблицы - PullRequest
0 голосов
/ 26 июня 2018

У меня есть таблица «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

Как работает мой запрос и почему я получаю эту ошибку? Как мне достичь своей цели?

Бест, приятель

1 Ответ

0 голосов
/ 26 июня 2018
  1. Вы нарушаете уникальное ограничение, вставляя повторяющиеся значения в таблицу SchoolYearTeachingDays.

  2. Чтобы исправить ошибку, установите условие not, чтобы уже вставленные даты не вставлялись снова в таблицу SchoolYearTeachingDays.

Пример,

INSERT INTO SchoolYearTeachingDays
 SELECT aDate FROM TeachingSaturdaysInSchoolYear T WHERE T.aDate NOT IN (SELECT S.aDate FROM SchoolYearTeachingDays S)
...