【发布时间】:2016-03-19 18:00:30
【问题描述】:
下面是我要创建的表的 DDL。但是,我希望从“Expertise_animal”派生“Expertise_breed”属性。例如,如果在“Expertise_animal”中输入“Dog”,我不想输入猫的品种。我将如何实现这一目标? 我正在使用 SQL Server Management Studio 2012
CREATE TABLE tExpertise
(
Expertise_ID int NOT NULL PRIMARY KEY, --E.G Data '001'
Expertise_type varchar(8) NOT NULL, --E.G Data 'Domestic'
Expertise_animal varchar(30) NOT NULL, --E.G Data 'Dog'
Expertise_breed varchar(30) NOT NULL --E.G Data 'Poodle'
)
【问题讨论】:
-
您想如何告诉您的 SQL Server
Poodle确实是dog? -
您可以创建检查约束
-
该检查约束看起来像一个小型数据库。
-
添加一个像
CONSTRAINT AK_tExpertise_unique UNIQUE(Expertise_type, Expertise_animal, Expertise_breed)这样的检查约束怎么样?但问题仍然存在:你想如何告诉 SQL Serverbat不是bird?要么你硬编码它。但是,您也可以使用所有可能/允许的组合预先填写列表,否则一个人将不得不验证新条目,您只需在表的末尾添加一个IsVerified位并要求用户验证数据。 -
这取决于你的约束有多复杂。通常,如果简单,请使用检查约束。如果它很复杂,你需要使用触发器。
标签: sql sql-server sql-server-2012 ddl