MySQL INSERT INTO 语法

9

我有以下结构

user_id int(11)
right   int(11)
group_id int(11)
value   tinyint(1)

还有三个查询

INSERT INTO  user_rights (`user_id`,`right`,`group_id`,`value`)
VALUES ( '42',  '160',  '1',  '1' );

INSERT INTO  user_rights ('user_id','right','group_id','value')
VALUES ( '42',  '160',  '1',  '1' );

INSERT INTO  user_rights (user_id,right,group_id,value)
VALUES ( '42',  '160',  '1',  '1' );

请解释为什么只有第一个有效?

我一直使用第三个!


第二个应该永远不会工作... - Michael Berkowski
使用“权限”一词,它是正确的。 - I159
2个回答

13

RIGHT是一个MySQL保留字。只有用反引号括起来才能正常工作。

如果不使用保留字,就可以不用反引号而直接使用。

第二种方式永远无法工作,因为引号仅用于引用字符串,而不用于数据库、表或列标识符。


谢谢,但这很愚蠢,为什么不用 ' 和 ` ?...算了,谢谢。 - Master345
@Row 没问题。这种区分是有很好的理由的——一种是针对列和表名这样的对象,另一种是针对字符串。但我同意 mySQL 在这方面的错误信息有点难以理解。 - Pekka

0

第二个也不会工作,因为“Right”是mysql的保留关键字http://drupal.org/node/141051。如果你想要使用该查询,你必须使用` for right。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接