Mysql 这个CREATETABLE语句有什么问题?

Mysql 这个CREATETABLE语句有什么问题?,mysql,Mysql,单词when 在某些数据库中,这是一个关键字。因此,在处理create table指令时,您可能会从数据库管理系统中收到一些错误。当为a且需要用反勾号引用时: CREATE TABLE findings ( ident VARCHAR(28), code VARCHAR(8), when DATETIME, ip VARCHAR(15) ); 编辑:评论中正确指出,这不是一个好的解决方案。您最好为列找到另一个名称。如果您非常喜欢使用when,那么在列名前面加上uu前缀。顺

单词when

在某些数据库中,这是一个关键字。因此,在处理create table指令时,您可能会从数据库管理系统中收到一些错误。

为a且需要用反勾号引用时:

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

编辑:评论中正确指出,这不是一个好的解决方案。您最好为列找到另一个名称。

如果您非常喜欢使用when,那么在列名前面加上uu前缀。

顺便说一句,为行名、表等使用保留名称不是一个好主意。

更好的解决方案应该是永远不要使用when这个词,即使引用了+1,但转义关键字可能比它的价值更麻烦。一般来说,引用标识符没有什么错。唯一实际的问题是,对于MySQL,您必须使用反引号字符,而正确的ANSI SQL方法是使用双引号,如“DATETIME”时的“code>”。MySQL可以配置为符合标准,但默认情况下不符合。你确定这不是DBMS特定的吗?我确定它在MySQL 5.x中工作。您可以使用_when字段名选择、插入、删除、更新等。这不是查询。查询是以“SELECT”开头的语句,它也不是DDL。DDL是一种语言的定义,而不是其中的语句。
CREATE TABLE `findings` (
    `ident` VARCHAR(28),
    `code` VARCHAR(8),
    `when` DATETIME,
    `ip` VARCHAR(15)
);