create table ebuilds2arches (
id INTEGER,
package_id INTEGER NOT NULL,
-- strict package version
sversion VARCHAR DEFAULT NULL,
-- package version where * might be used
version VARCHAR DEFAULT NULL,
-- id of the version restriction
restriction_id INTEGER DEFAULT NULL,
arch_id INTEGER NOT NULL,
-- id of the source where definition of arch for ebuilds specified
source_id INTEGER NOT NULL,
FOREIGN KEY (package_id) REFERENCES packages(id),
FOREIGN KEY (source_id) REFERENCES sources(id),
FOREIGN KEY (restriction_id) REFERENCES version_restrictions(id),
CONSTRAINT idx1_unq UNIQUE (package_id, arch_id),
CONSTRAINT chk_versions CHECK (sversion NOT NULL OR version NOT NULL)
--CONSTRAINT chk_sversion CHECK (sversion IN (SELECT version FROM ebuilds)),
CONSTRAINT chk_version CHECK (version like '%*')
PRIMARY KEY (id)
);
в constraint`е которий заремарен, хотелось бы добавить проверку следующего содержания: валидны только те значения, что есть в столбце version (а он как раз не primary key) в таблице ebuilds.
проверка которая сейчас, дает следующую ошибку при создании базы
vv@crusader ~/work/own/ruby/portage3/source/tools $ ./create_db
subqueries prohibited in CHECK constraints
vv@crusader ~/work/own/ruby/portage3/source/tools $ ^C
я пытался гуглить, но безрезультатно. в нескольких тредах говорят что это невозможно. Если это так, то посоветуйте другие вариатны решения