数据库 Table 使用 LIKE 运算符进行约束
Database Table Constraint using LIKE operator
我正在尝试使用 like 运算符对我的数据库 table 设置约束。这在 Azure SQL 服务器中可能吗?
我有一个列 FILE_NAME,例如 'VID' 作为大多数记录中的常见模式。然后,我有另一列 FILE_TYPE,我想在其中设置约束,以便只能插入可能的值。
Table定义:
CREATE TABLE dbo.CUST_LIBRARY
(
FILE_NAME VARCHAR(20),
FILE_TYPE VARCHAR(10)
);
我的数据如下所示:
FILE_NAME
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'
);
我正在尝试使用 like 运算符对我的数据库 table 设置约束。这在 Azure SQL 服务器中可能吗?
我有一个列 FILE_NAME,例如 'VID' 作为大多数记录中的常见模式。然后,我有另一列 FILE_TYPE,我想在其中设置约束,以便只能插入可能的值。
Table定义:
CREATE TABLE dbo.CUST_LIBRARY
(
FILE_NAME VARCHAR(20),
FILE_TYPE VARCHAR(10)
);
我的数据如下所示:
FILE_NAME
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'
);