2009-11-30 78 views
2
CREATE TABLE findings (
    ident VARCHAR(28), 
    code VARCHAR(8), 
    when DATETIME, 
    ip VARCHAR(15) 
); 
+0

这不是查询。查询是一个以“SELECT”开头的语句。 – 2009-11-30 17:44:41

+0

它也不是DDL。 DDL是语言的定义,而不是其中的语句。 – soulmerge 2009-11-30 19:15:50

回答

6

这个词的时候。

在一些数据库中,这是一个关键字。因此,在处理创建表指令时,您可能会从数据库管理系统中获得一些错误。

9

when是一个keyword in mysql,需要用反引号被引用:

CREATE TABLE `findings` (
    `ident` VARCHAR(28), 
    `code` VARCHAR(8), 
    `when` DATETIME, 
    `ip` VARCHAR(15) 
); 

编辑:已正确地指出了评论,这不是一个很好的解决方案。你最好为你的专栏寻找另一个名字。

+2

更好的解决方案应该是永远不要使用when字,即使引用。 – 2009-11-30 17:35:57

+0

+1,但转义关键字可能比它的价值更麻烦。 – 2009-11-30 17:36:33

+0

一般而言,引用标识符没有任何问题。唯一的实际问题是,对于MySQL,您必须使用反引号字符,而适当的ANSI SQL方法是在“DATETIME”时使用双引号。 MySQL可以配置为符合标准,但默认情况下不符合标准。 – bobince 2009-11-30 18:11:40

1

,如果你使用的时候只需用前缀的列名_那么热衷。

+0

你确定这不是DBMS特有的吗? – 2009-11-30 17:43:08

+0

我相信它可以在MySQL 5.x中使用。您可以使用_when字段名称选择,插入,删除,更新等。 – Kalpak 2009-12-01 08:05:24

1

顺便说一下,使用行名称,表格等的保留名称不是一个好主意。