История изменений
Исправление a--, (текущая версия) :
Мой вариант (тип + ссылка).
идея годная, но вот реализация отнюдь не везде похоже прокатит; возможно для sqlite (ну и стандарта sql) придется делать таблицу специально под айдишники
в sqlite мне удалось создать таблицу
CREATE VIEW my_union AS SELECT * FROM t1 UNION ALL SELECT * FROM t2;
CREATE TABLE test
(
id INT NOT NULL,
FOREIGN KEY (id) REFERENCES my_union(id)
);
но дальше sqlite в своем типичном динамическом (говно)стиле отказался что-то вставлять:
insert into t1 values (18),(19) ;
insert into t2 values (28),(29) ;
insert into test values (18),(19) ;
Error: foreign key mismatch - "test" referencing "my_union"
— его видимо волнует уникальность и индексы; но с уникальным индексом на вьюху он тоже не согласился: Error: views may not be indexed
как вариант можно попробовать check constaint но это неполноценно смотрится
Исходная версия a--, :
Мой вариант (тип + ссылка).
идея годная, но вот реализация отнюдь не везде похоже прокатит; возможно для sqlite (ну и стандарта sql) придется делать таблицу специально под айдишники
в sqlite мне удалось создать таблицу
CREATE VIEW my_union AS SELECT * FROM t1 UNION ALL SELECT * FROM t2;
CREATE TABLE test
(
id INT NOT NULL,
FOREIGN KEY (id) REFERENCES my_union(id)
);
но дальше sqlite в своем типичном динамическом (говно)стиле отказался что-то вставлять:
insert into t1 values (18),(19) ;
insert into t2 values (28),(29) ;
insert into test values (18),(19) ;
Error: foreign key mismatch - "test" referencing "my_union"
– его видимо волнует уникальность и индексы; но с уникальным индексом на вьюху он тоже не согласился: Error: views may not be indexed
как вариант можно попробовать check constaint но это неполноценно смотрится