我有一个表格:
sqlite表示“CHECK约束中不允许子查询”。我可以替换。
但是我无法对最后约束的第二个子部分进行相同的处理技巧。
有没有可能在一个表格中实现我最初想要的功能(我真的不想把这些数据分成2个或更多个表格)?// 希望说明很清楚
create table use_flags3 (
id INTEGER,
flag_name VARCHAR NOT NULL,
flag_description VARCHAR NOT NULL,
flag_type_id INTEGER NOT NULL,
package_id INTEGER,
FOREIGN KEY (flag_type_id) REFERENCES use_flags_types(id),
FOREIGN KEY (package_id) REFERENCES packages(id),
PRIMARY KEY (id)
);
当flag_type_id等于1时,我希望flag_name
列是唯一的仅限于。我尝试使用以下约束条件实现此目标:
CONSTRAINT idx1_chk CHECK (
flag_type_id in (select id from use_flags_types where flag_type="local") or
flag_type_id in (select id from use_flags_types where flag_type="expand") or
flag_type_id in (select id from use_flags_types where flag_type="expand_hidden") or
(
flag_type_id in (select id from use_flags_types where flag_type="global") and
flag_name not in (select flag_name from use_flags)
)
)
sqlite表示“CHECK约束中不允许子查询”。我可以替换。
flag_type_id in (select id from use_flags_types where flag_type="local")
使用
flag_type_id = ${ID_HERE} -- id from `select id from use_flags_types where flag_type="local"`
但是我无法对最后约束的第二个子部分进行相同的处理技巧。
flag_name not in (select flag_name from use_flags)
有没有可能在一个表格中实现我最初想要的功能(我真的不想把这些数据分成2个或更多个表格)?// 希望说明很清楚