2013-05-05 32 views
0

我有如下表:使觸發器/案例SQL

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詞「的信用卡」,然後creditnummer必須包含數字,否則它將爲NULL。

我該怎麼做?

+3

Wich RDBMS's?你有沒有嘗試過一些東西,也許是觸發器,然後發佈代碼。 – Yaroslav 2013-05-05 21:12:34

回答

0

你通常會寫一個檢查約束來實現這一點。您需要執行規則

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

這是僞代碼,真正的語法取決於你的RDBMS。

Check-contraint一次強制執行此規則。您只請求新添加的Creditcard值需要符合規則(允許違反已存在於數據庫中的行)。通常檢查約束是你真正想要的。

0

您可能希望考慮一個更強大,更簡單的解決方案:爲信用卡號創建一個表,並在該表中強制執行所有行的數字規則。