2010-11-08 74 views
0

我曾尝试使用以下SQL脚本建立一个表:没有前导零SQL唯一索引

CREATE TABLE MY_TABLE ( 
    ID NUMBER NOT NULL, 
    CODE VARCHAR2(40) NOT NULL, 
    CONSTRAINT MY_TABLE PRIMARY KEY (ID) 
); 

CREATE UNIQUE INDEX XUNIQUE_MY_TABLE_CODE ON MY_TABLE (CODE); 

的问题是,我需要确保代码没有为它的价值前导零。

我该如何在SQL中完成此操作,以便存储不含前导零的40个字符的值?

+1

是否要拒绝具有前导零的值,或者是否希望在插入时去除前导零(s)? – Tim 2010-11-08 22:33:59

+0

都没有。我想要一个没有前导零的40个字符的值。 – TERACytE 2010-11-08 22:41:28

+0

40个字符值的生成与独特索引无关 - 唯一索引仅验证被添加/更新的值是唯一的。 – 2010-11-08 22:48:01

回答

1

CODE VARCHAR2 NOT NULL CHECK (VALUE not like '0%')

对不起 - 对原规范轻微误读

+4

MySQL具有CHECK约束语法,但不会在任何引擎上执行。 – 2010-11-08 22:34:17

+1

由于像这样愚蠢,这个线程中真正的WTF又是“MySQL”。朋友不要让朋友使用MySQL。 – 2010-11-08 23:07:24

0

如果你能保证所有INSERT S和UPDATE s到这个表是通过存储过程做,你可以把一些代码有检查数据是否有效,如果没有则返回错误。

P.S.一个CHECK CONSTRAINT会更好,除了MySQL不支持它们。