我猜“CREATE TABLE CHECK”中不允许子查询(只允许当前值)。但我想检查表中当前行外部的条件,如下所示:
伪代码:
CREATE TABLE Persons
(
LoginName varchar(128) NOT NULL CHECK (OLNY ONE of following can be duplicate to an existing record: LoginName, LastName or FirstName. Other two may not),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255)
)
我想检查这个条件:检查(以下 OLNY 一个可以与现有记录重复:登录名、姓氏或名字。其他两个可能不会)
怎么做?(请写代码,不只是提示。谢谢)
样本数据
现存的:
- 珍妮,史密斯,简,榆树海峡。
- 约翰尼,史密斯,约翰,榆树海峡。
- 阿尔瓦罗, 希门尼斯, 阿尔瓦罗, 5th Av.
允许插入/更新:
- Greenhorn、Prochazka、Martin、MyStreet#1
- 约翰尼,机器人,5 号,陆军 Str。
- GodLike,史密斯,No5,Army Str。
不允许:
- 约翰尼,史密斯,约翰,66 号公路
- 阿尔瓦罗,罗马,阿尔瓦罗,下海峡。
- 阿尔瓦罗、罗曼、约翰、唐斯特。
为了最容易理解什么是不允许的:如果“名称”值之一是重复的,其余的必须是唯一的