要插入到名为"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
语句将Y
或N
值更改为其他值(。