[英]Add Check Constraint to Version number column
I'm trying to figure out how to add a CHECK
constraint to the Version
column to only accept NVARCHAR
values with the format as such for example:我试图弄清楚如何将CHECK
约束添加到Version
列以仅接受格式如下的NVARCHAR
值:
(Number.number.number)
10.4.1
or或者
(number.number.number. 3numbers)
10.4.1.111
This is my table:这是我的桌子:
CREATE TABLE dbo.Table
(
ID int PRIMARY KEY IDENTITY,
Version NVARCHAR(100) NOT NULL CHECK (Version)
)
Desired result would be, when a users updates the Version
column, they must adhere to the defined formats.期望的结果是,当用户更新Version
列时,他们必须遵守定义的格式。
For example, 11.3.4
would be acceptable and 12.4.3.444
would be acceptable.例如, 11.3.4
是可以接受的, 12.4.3.444
也是可以接受的。
Please try the following solution.请尝试以下解决方案。
SQL SQL
USE tempdb;
GO
DROP TABLE IF EXISTS dbo._tbl;
CREATE TABLE dbo._tbl (ID INT IDENTITY PRIMARY KEY, ver VARCHAR(30));
INSERT INTO dbo._tbl (ver) VALUES
('10.4.1'),
('10.4.1.111');
alter table dbo._tbl
add constraint codeCheck check (COALESCE(TRY_CAST(PARSENAME(ver, 1) AS INT)
+ TRY_CAST(PARSENAME(ver, 2) AS INT)
+ TRY_CAST(PARSENAME(ver, 3) AS INT), 0) + COALESCE(TRY_CAST(PARSENAME(ver, 1) AS INT)
+ TRY_CAST(PARSENAME(ver, 2) AS INT)
+ TRY_CAST(PARSENAME(ver, 3) AS INT)
+ TRY_CAST(PARSENAME(ver, 4) AS INT), 0) > 0);
-- it will fail
INSERT INTO dbo._tbl (ver) VALUES
('10.4.r');
-- it will work
INSERT INTO dbo._tbl (ver) VALUES
('17.7.77');
SELECT * FROM dbo._tbl;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.