我用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
(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
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. reference vehicle,,oracle中也不是这样! references tablename(colname)
3. primary key (plates,ownerid), 这个ownerid在哪儿了?如果你能在oracle中执行正常,基本上是不可能的事儿。
晕,那你把第二个贴出来干什么?!第一个的问题是 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)
);
谢谢,但是,如果我改变了,数据就变了,我需要 检查数据是否在0到 6 MySql 如何更改啊。
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,在实际中并不做任何检查。所以只能由你的宿主程序来判断了。或者是触发器中实现。