LINUX.ORG.RU

История изменений

Исправление 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 но это неполноценно смотрится