【发布时间】:2015-11-18 12:33:25
【问题描述】:
为组合列添加表约束
我有一个包含以下列的数据库表来存储联系方式
CREATE TABLE `contacts` (
`id` int(11),
`user_id` int(11), -- Foreign key to user table
`contact_type` enum('Email', 'Phone', 'Address') -- Possible values
`contact` varchar(100),
`is_verified` tinyint(1), -- Boolean
`is_primary` tinyint(1), -- Boolean
PRIMARY KEY (`id`)
);
是否可以在is_primary 列上设置约束,以便一个用户在每个contact_type 上最多可以有一个主要联系人?
【问题讨论】:
-
你用的是oracle还是postgresql还是mysql哪个数据库?
-
目前我正在使用 Postgres,但欢迎任何答案
-
然后删除反引号。它们在除 mysql 之外的任何 SQL 实现中都是错误的。而且 Postgres 有一个布尔数据类型,所以你不需要 tinyint 的东西。
标签: mysql database postgresql constraints