为SQL创建触发器/案例

时间:2013-05-05 20:58:44

标签: 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)      null, 
    constraint pk_username primary key(username)
)

我正在尝试使用以下规则制作案例/触发器: 如果在Credoleoptiename中插入“Creditcard”一词,那么creditnummer必须包含数字,否则它将为NULL。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您通常会编写一个check-constraint来实现此目的。您需要强制执行规则

controleoptiename = 'Creditcard and isNumber(creditnummer) or
controleoptiename != 'Creditcard and creditnummer is null

这是伪代码,真正的语法取决于您的RDBMS。

Check-contraint会为所有人执行此规则。您只要求新添加的Creditcard值需要符合规则(允许违反已存在于数据库中的行)。通常,检查约束是你真正想要的。

答案 1 :(得分:0)

您可能希望考虑一个更强大,更简单的解决方案:为信用卡号创建一个表,并对该表中所有行强制执行仅数字规则。