LINUX.ORG.RU

[sql[ilte]][newbie]помогите соорудить constraint

 


0

0
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

я пытался гуглить, но безрезультатно. в нескольких тредах говорят что это невозможно. Если это так, то посоветуйте другие вариатны решения

★★★★★

Последнее исправление: ZuBB (всего исправлений: 1)

Ответ на: комментарий от phoenix

если по полю вообще нет индекса - отловишь жуткие тормоза даже если сделаешь так как хочешь. А переделать на PRIMARY KEY не судьба?

yyk ★★★★★
()
Ответ на: комментарий от yyk

индекс есть.

немного извратился и таки сделал через PRIMARY KEY. немного не нравится как оно выглядид. но посмотрим как оно будет в тестировании.

если чо позову вас как ревювера когда будет на что посмотреть. вы не против?

ZuBB ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.