我用mySql创建table 后,出现了问题,(我在甲骨文中就可以编译的)create table VEHICLE_TYPE
(make varchar(10) not null,
model varchar(10) not null,
power char(1),
no_pass integer constraint check_pass check (no_pass between 0 and 6),
cap float constraint check_cap check (cap >= 0),
cc integer
constraint check_cc check (cc >= 0),
primary key (make,model));错误提示
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'const
raint check_pass check (no_pass between 0 and 6),
cap float constraint chec' at line 5

解决方案 »

  1.   


    mysql> create table OWNS
        -> plates varchar(6) not null reference vehicle,
        -> purchase_date date,
        -> drr char(6),
        -> primary key (plates,ownerid));
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'plate
    s varchar(6) not null reference vehicle,
    purchase_date date,
    drr char(6),
    p' at line 2
    mysql>
    同样的一个问题。。
      

  2.   

    你的语句根本不对。1. create table OWNS 后缺少( ,你的()根本不匹配。
    2. reference vehicle,,oracle中也不是这样! references tablename(colname)
    3. primary key (plates,ownerid), 这个ownerid在哪儿了?如果你能在oracle中执行正常,基本上是不可能的事儿。
      

  3.   


    晕,那你把第二个贴出来干什么?!第一个的问题是 MySQL不支持 constraint check_pass check (no_pass between 0 and 6),改成如下。
    create table VEHICLE_TYPE(
    make varchar(10) not null,
    model varchar(10) not null,
    power char(1),
    no_pass integer,
    cap float,
    cc integer,
    primary key (make,model)
    );
      

  4.   


    谢谢,但是,如果我改变了,数据就变了,我需要 检查数据是否在0到 6 MySql 如何更改啊。
      

  5.   

    没有办法。虽然你可以用create table VEHICLE_TYPE(
    make varchar(10) not null,
    model varchar(10) not null,
    power char(1),
    no_pass integer check (no_pass between 0 and 6),
    cap float check (cap >= 0),
    cc integer check (cc >= 0),
    primary key (make,model)
    );
    这种方法把check 加上,但很不幸,在MySQL中会忽略 CHECK,在实际中并不做任何检查。所以只能由你的宿主程序来判断了。或者是触发器中实现。