数据库 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'
            );