mySql 不支持 check么?

cycchina 2009-05-18 09:27:38
我用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
...全文
270 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cycchina 2009-05-18
  • 打赏
  • 举报
回复
服务器,又出错了,无法结贴。。
等他们恢复了,我在结贴。。
ACMAIN_CHM 2009-05-18
  • 打赏
  • 举报
回复

没有办法。虽然你可以用

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,在实际中并不做任何检查。

所以只能由你的宿主程序来判断了。或者是触发器中实现。
cycchina 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ACMAIN_CHM 的回复:]
引用 3 楼 cycchina 的回复:
引用 2 楼 ACMAIN_CHM 的回复:
你的语句根本不对。

1. create table OWNS 后缺少( ,你的()根本不匹配。
2. reference vehicle,,oracle中也不是这样! references tablename(colname)
3. primary key (plates,ownerid), 这个ownerid在哪儿了?

如果你能在oracle中执行正常,基本上是不可能的事儿。



你难道看书也是断章取义么?
更本2个代码。。 上面的是一个,下面的是另外一个,…
[/Quote]

谢谢,但是,如果我改变了,数据就变了,我需要 检查数据是否在0到 6 MySql 如何更改啊。
ACMAIN_CHM 2009-05-18
  • 打赏
  • 举报
回复

[Quote=引用 3 楼 cycchina 的回复:]
引用 2 楼 ACMAIN_CHM 的回复:
你的语句根本不对。

1. create table OWNS 后缺少( ,你的()根本不匹配。
2. reference vehicle,,oracle中也不是这样! references tablename(colname)
3. primary key (plates,ownerid), 这个ownerid在哪儿了?

如果你能在oracle中执行正常,基本上是不可能的事儿。



你难道看书也是断章取义么?
更本2个代码。。 上面的是一个,下面的是另外一个,
上面的甲骨文可以…
[/Quote]

晕,那你把第二个贴出来干什么?!

第一个的问题是 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)
);
cycchina 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ACMAIN_CHM 的回复:]
你的语句根本不对。

1. create table OWNS 后缺少( ,你的()根本不匹配。
2. reference vehicle,,oracle中也不是这样! references tablename(colname)
3. primary key (plates,ownerid), 这个ownerid在哪儿了?

如果你能在oracle中执行正常,基本上是不可能的事儿。


[/Quote]
你难道看书也是断章取义么?
更本2个代码。。 上面的是一个,下面的是另外一个,
上面的甲骨文可以执行。。。
ACMAIN_CHM 2009-05-18
  • 打赏
  • 举报
回复

你的语句根本不对。

1. create table OWNS 后缺少( ,你的()根本不匹配。
2. reference vehicle,,oracle中也不是这样! references tablename(colname)
3. primary key (plates,ownerid), 这个ownerid在哪儿了?

如果你能在oracle中执行正常,基本上是不可能的事儿。

cycchina 2009-05-18
  • 打赏
  • 举报
回复

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>


同样的一个问题。。。。。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧