есть таблица Elements с полем StateId, которая должна ссылаться на таблицу States с отношением один-к-одному. Но эти данные не всегда могут быть, так как их вычисляет другой сервис, спустя какое-то время после того, как таблица Elements заполнится.
На тестовый INSERT падает с ошибкой `ERROR: ОШИБКА: значение NULL в столбце "StateID" отношения "Elements" нарушает ограничение NOT NULL
DETAIL: Ошибочная строка содержит (0, 0, wall, 1234, null, null).
SQL state: 23502`
Ничего толкового не нагуглить не удалось
Может это https://stackoverflow.com/questions/45442536/postgresql-include-optional-nullable-foreign-key ?
Находил это, там у парня в этом примере с тем же самым падает, если перейти по SQL DEMO
Оно работает. Вы пример внимательно прочитайте.
Вообще в ошибке же конкретно написано: в столбце "StateID" отношения "Elements" нарушает ограничение NOT NULL
Вот код, вроде как там не стоит NOT NULL в таблице Elements
В смысле ? )) CREATE TABLE "Elements" ( "Id" serial NOT NULL, ... ALTER TABLE "Elements" ADD CONSTRAINT "Elements_fk0" FOREIGN KEY ("FileID") REFERENCES "Files"("Id"); ALTER TABLE "Elements" ADD CONSTRAINT "Elements_fk1" FOREIGN KEY ("StateID") REFERENCES "States"("Id"); ALTER TABLE "Elements" ADD CONSTRAINT "Elements_fk2" FOREIGN KEY ("BuildingTimeID") REFERENCES "BuildingTimes"("Id"); ALTER TABLE "Parameters" ADD CONSTRAINT "Parameters_fk0" FOREIGN KEY ("ElementId") REFERENCES "Elements"("Id");
так он падает когда я ставлю через: INSERT INTO "Elements"( "Id", "FileID", "Name", "RvtId", "StateID", "BuildingTimeID") VALUES (0, 0, 'wall', 1234, null, null);
Ну так по столбцам рекомендую посмотреть что Вы делаете.
Все еще не понимаю, что не так. Типа, в foreign key ставлю нуллы, которые должны поддерживаться, но падает сразу на первом же StateId. Если тут что-то очень простое, то палкой сильно не бейте, ооочень давно не работал с базами
http://mech.math.msu.su/~shvetz/54/inf/databases/chSerial.xhtml
Обсуждают сегодня