读书人

约束解决办法

发布时间: 2013-01-07 10:02:24 作者: rapoo

约束
给一个列(此列不是主键和外键)添加约束,使约束为D+数字,数字为自动增长的
[解决办法]

USE tempdb
GO
CREATE TABLE T(Col VARCHAR(50) )
go
ALTER TABLE T ADD CONSTRAINT CK_T_Col CHECK( Col LIKE 'D%' AND Col NOT LIKE 'D%[^0-9]%')

go

INSERT T SELECT 'D123456' --OK
INSERT T SELECT '123456' --Error
INSERT T SELECT 'F123456' --Error
DROP TABLE T

[解决办法]
create table DD(
id int identity(1,1) NOT NULL,
D_ID as 'D'+LTRIM(10000+id),--这里改成计算列,缺点是这个列是不能被更新的
name varchar(50) NULL,
)
go

insert into DD values('aa')
insert into DD values('aa')
insert into DD values('aa')
insert into DD values('aa')
select * from DD
/*
idD_IDname
1D10001aa
2D10002aa
3D10003aa
4D10004aa
*/

UPDATE DD SET D_ID='D10004' WHERE id=1
/*
消息 271,级别 16,状态 1,第 1 行
不能修改列 "D_ID",因为它是计算列,或者是 UNION 运算符的结果。

*/

读书人网 >SQL Server

热点推荐