为SQL生成触发器/案例

为SQL生成触发器/案例,sql,ddl,Sql,Ddl,我有下表: create table Sale( bankname char(8) null, controleoptiename char(10) not null, creditcardnummer numeric(19) null, username char(10) not null, accountnummer numeric(7) n

我有下表:

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)
)
我正在尝试使用以下规则创建案例/触发器: 如果在controleoptiename中插入单词“Creditcard”,则creditnummer必须包含数字,否则将为空


我如何才能做到这一点?

您通常会编写一个检查约束来实现这一点。你需要执行规则

controleoptiename = 'Creditcard and isNumber(creditnummer) or
controleoptiename != 'Creditcard and creditnummer is null
这是伪代码,真正的语法取决于您的RDBMS


支票合同强制执行此规则一次,一劳永逸。您只要求新添加的信用卡值必须符合规则(允许数据库中已有的行发生冲突)。通常,检查约束是你真正想要的。

< P>你可能希望考虑一个更强大、更简单的解决方案:为信用卡号创建一个表,并为该表中的所有行只执行数字的规则。 什么是RDBMS?你有没有试过什么,可能是触发器,然后发代码。