我有下表:
create table Sale(
bankname char(8) null,
controleoptiename char(10) not null,
creditcardnummer numeric(19) null,
username char(10) not null,
accountnummer numeric(7) null,
constraint pk_username primary key(username)
)
我正在尝试使用以下规则制作案例/触发器: 如果在Credoleoptiename中插入“Creditcard”一词,那么creditnummer必须包含数字,否则它将为NULL。
我该怎么做?
答案 0 :(得分:0)
您通常会编写一个check-constraint来实现此目的。您需要强制执行规则
controleoptiename = 'Creditcard and isNumber(creditnummer) or
controleoptiename != 'Creditcard and creditnummer is null
这是伪代码,真正的语法取决于您的RDBMS。
Check-contraint会为所有人执行此规则。您只要求新添加的Creditcard值需要符合规则(允许违反已存在于数据库中的行)。通常,检查约束是你真正想要的。
答案 1 :(得分:0)
您可能希望考虑一个更强大,更简单的解决方案:为信用卡号创建一个表,并对该表中所有行强制执行仅数字规则。