-->

如何创建默认约束在SQL Server相关的另一列(How to create default co

2019-07-22 03:22发布

我有这样一个表

TAB1

create table tab1(ID int identity(1,1), Type varchar(10),IsValued bit)

TAB1:

ID Type IsValued
----------------
1   S   1
2   R   0
3   R   0
4   S   1
5   S   1
6   R   0
7   S   1

而不是插入值插入IsValued列我想创建一个约束(不触发)时类型=“S”,IsValued应插入为1,并且当类型=“R”,IsValued应插入为0

像: IsValued = case when Type ='S' then 1 when Type ='R' then 0 end

我怎样才能做到这一点..

Answer 1:

你想要一个计算列。 例如:

CREATE TABLE tab1
(
 ID INT IDENTITY(1,1)
,[Type] VARCHAR(10)
,IsValued AS CASE [Type] WHEN 'S' THEN 1
                         WHEN 'R' THEN 0
             END
)

您可以添加使用以下语法的现有表:

ALTER TABLE dbo.tab1 ADD IsValued AS CASE [Type] WHEN 'S' THEN 1
                                                 WHEN 'R' THEN 0
                                     END

您可以通过添加关键字坚持列PERSISTED列创建后。 坚持列表示该字段被存储在磁盘上。 当您插入或更新记录,SQL服务器将计算出该点的值。 如果不这样做,SQL Server将在每次访问行的时间去解决它。 一个很好的解释,可以发现SQL Server 2005的计算列持久化

ALTER TABLE dbo.tab1 ADD IsValued AS CASE [Type] WHEN 'S' THEN 1
                                                 WHEN 'R' THEN 0
                                     END PERSISTED


文章来源: How to create default constraint dependent other column in sql server