2016-04-25 65 views
0

這是我的創作腳本:插入PERSOANE表回報違反檢查約束,但不應該

CREATE TABLE PERSOANE (
idPers numeric (5) 
    CONSTRAINT pk_persoane PRIMARY KEY, 
NumePren varchar (30) 
    CONSTRAINT ck_nume CHECK (NumePren=LTRIM(INITCAP(NumePren))), 
Loc varchar (30) 
    CONSTRAINT nn_loc NOT NULL 
    CONSTRAINT ck_loc CHECK (Loc=LTRIM(INITCAP(Loc))), 
Jud varchar (25) 
    CONSTRAINT nn_jud NOT NULL 
    CONSTRAINT ck_jud CHECK (Jud=LTRIM(INITCAP(Jud))), 
Tel numeric (10) 
    CONSTRAINT nn_tel NOT NULL, 
E_mail varchar(254) 
    CONSTRAINT nn_e_mail NOT NULL 
    CONSTRAINT ck_e_mail CHECK (E_mail = LTRIM(E_mail)) 
); 

當我嘗試在我得到了錯誤的表中插入值:用於關係「persoane」新行違反了檢查約束「ck_jud」這裏是我的插入腳本:

INSERT INTO PERSOANE VALUES (11111, 'slimi marius', 'oras', 'judet', 0752361507, '[email protected]'); 

任何人有任何建議如何解決這個問題?

回答

0

initcap()會將第一個字符改爲大寫。因此,對列numepren,locjud的檢查限制要求您輸入每個單詞的第一個字符都是大寫的值。在值'jude'中,第一個字符是小寫,所以檢查約束被違反。您需要改用'Jude'。這也適用於您定義的其他列:

INSERT INTO PERSOANE 
(idpers, numepren, loc, jud, tel, e_mail) 
    VALUES 
(11111, 'Slimi Marius', 'Oras', 'Judet', 0752361507, '[email protected]'); 
+0

Thx,沒有注意。 – slimi

相關問題