Есть пустая таблица
CREATE TABLE KLADR_ZIP (
ZIP INTEGER NOT NULL,
KLADR_ID BIGINT NOT NULL,
HOUSES VARCHAR(50)
);
ALTER TABLE KLADR_ZIP ADD CONSTRAINT PK_KLADR_ZIP PRIMARY KEY (ZIP,
KLADR_ID);
Хотим ее заполнить таким запросом:
insert into kladr_zip (zip, kladr_id)
select distinct trim(zip) zip, substring(kladr from 1 for 2)||
substring(kladr from 4 for 12) name from "DOMA.DBF"
union
select distinct zip, kladr_id name from kladr where zip is not null
И неожиданно получаем фигвам в виде
Invalid insert or update value(s): object columns are
constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "PK_KLADR_ZIP" on table
"KLADR_ZIP".
Хотя вроде как оба запрос distinct и union между ними страхует от
повторяющихся записей.
Ладно, фиг с тобой золотая рыбка, напишем так:
insert into kladr_zip (zip, kladr_id)
select distinct zip, name from (
select distinct trim(zip) zip, substring(kladr from 1 for 2)||
substring(kladr from 4 for 12) name from "DOMA.DBF"
union
select distinct zip, kladr_id name from kladr where zip is not null
)
И получаем то же самое в той же проекции.
Интересно, это у меня что-то с головой, или у сервера?
WI-V2.1.0.17798 Firebird 2.1