0

我有下表:

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 必须包含数字,否则它将为 NULL。

我怎样才能做到这一点?

4

2 回答 2

0

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

于 2013-05-06T03:52:11.080 回答
0

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

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

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

Check-contraint 一劳永逸地强制执行此规则。您只要求新添加的 Creditcard 值需要遵守规则(允许违反数据库中已有的行)。通常检查约束是您真正想要的。

于 2013-05-05T22:18:34.197 回答