使用LIKE运算符的数据库表约束



我正在尝试使用类似的运算符在数据库表上设置约束。这在Azure SQL Server中可能吗?

我有一个列FILE_NAME,例如"VID"是大多数记录中的常见模式。然后,我有另一列FILE_TYPE,我想在其中设置约束,以便只能插入可能的值。

表定义:

CREATE TABLE dbo.CUST_LIBRARY
(
FILE_NAME VARCHAR(20),
FILE_TYPE VARCHAR(10)
);

以下是我的数据:

文件名


VID_GEO_1|

IMG-ART_1|

TER-VID_6|

FIL-PAR_1|薄膜

现在,我想在列FILE_TYPE上设置一个约束,如果FILE_NAME中有"VID",则只能插入值"MP4"、"AVI"。否则,其余记录应始终默认为"NA",不应插入其他任何记录。

您想要一个检查约束:

CREATE TABLE dbo.CUST_LIBRARY (
FILE_NAME VARCHAR(20),
FILE_TYPE VARCHAR(10),
CONSTRAINT CHK_CUST_LIBRARY 
CHECK ( (FILE_TYPE IN ('MP4', 'AVI') AND (FILE_NAME LIKE '%VID%')) OR
FILE_TYPE = 'NA'
);

最新更新