我有一个定义关系的表
Src smallint(5) unsigned NOT NULL,
Dst smallint(5) unsigned NOT NULL,
other fields
Run Code Online (Sandbox Code Playgroud)
我需要添加一个约束,说明其中一列中是否存在给定值。
1) 不能在同一列中重复。
2) 也不能在其他列中重复。
这是无效的
src dst
1 354
666 1
Run Code Online (Sandbox Code Playgroud)
由于值 1 出现在第一行中,因此它不能出现在第二行中。
如何定义这种类型的约束?
我正在对应用程序杠杆进行轻量级检查。但我希望数据库确保它。
更新:目前我有 7 种不同类型的关系,每种关系类型一张表。
更新 2:原来这只是一张包含所有关系的表,现在我要爆炸了
# variante
Create TABLE `productsRelationships3` (
`relSrc` smallint(5) unsigned NOT NULL,
`relDst` smallint(5) unsigned NOT NULL,
PRIMARY KEY `src-dst-3` (relSrc, relDst),
UNIQUE `src-3` (relSrc)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# this is the import
INSERT INTO productsRelationships3 SELECT relSrc, relDst FROM productsRelationships WHERE relType=3;
DELETE FROM …Run Code Online (Sandbox Code Playgroud)