make一列只能接受2个值



要插入到名为"type"的列中的值之一只能是"Y"或"N"。不允许我修改约束,将check/enum添加到表中。

是否可以修改插入查询以限制要插入到"type"列中的值只能是"Y"或"N"?比如使用if语句?

insert into table_name(id, name, type) values(:id, :name, :type)

使用CASE表达式:

insert into table_name(
id,
name,
type
) values(
:id,
:name,
CASE :type WHEN 'Y' THEN 'Y' ELSE 'N' END
);

然后,无论传递给:type绑定变量的值是什么,type列都将仅设置为'Y''N'


但是,您应该使用CHECK约束来在表上强制执行它,而不是试图在INSERT语句中实现等效版本(这实际上并不等效,因为任何人都可以使用UPDATE语句将YN值更改为其他值(。

最新更新