【问题标题】:PostgreSQL insert queryPostgreSQL 插入查询
【发布时间】:2011-11-09 19:04:43
【问题描述】:

我尝试在日志表中插入一行,但它会引发错误消息。 >

log的表结构是这样的:

no         integer  NOT NULL nextval('log_no_seq'::regclass)    
ip         character varying(50)    
country    character varying(10)    
region     character varying(10)    
city       character varying(50)    
postalCode character varying(10)    
taken      numeric  
date       date

和我的查询:

INSERT INTO log (ip,country,region,city,postalCode,taken,date) VALUES 
("24.24.24.24","US","NY","Binghamton","11111",1,"2011-11-09")

=> ERROR: column "postalcode" of relation "log" does not exist

第二次尝试查询:(不含邮政编码)

INSERT INTO log (ip,country,region,city,taken,date) VALUES 
("24.24.24.24","US","NY","11111",1,"2011-11-09")

=> ERROR: column "24.24.24.24" does not exist

我不知道我做错了什么......

而 PostgreSQL 没有 datetime 类型? (2011-11-09 11:00:10)

【问题讨论】:

  • PostgreSQL 有日期时间类型,它称之为timestamp。此外,该产品是 PostgreSQL,而不是 Postgre。如果你要缩短它,它会是 Postgres(这实际上是它在获得 SQL 支持之前的名称)。
  • 双引号用于引号标识符(例如表名和列名),单引号用于字符串文字。
  • 太棒了!谢谢谢谢谢谢!
  • 发生的情况是人们在 MySQL 上学习,其中时间戳最初被定义为如果它是第一个时间戳列,则使用最新的时间戳自动更新。在意识到他们使用了 SQL 保留关键字和类型而不是指定的用途后,MySQL 坚持保持向后兼容性,需要一个不会自动更新的时间戳类型字段,因此他们发明了 datetime 作为一种类型。 SQL 规范使用时区类型定义了时间戳和时间戳。日期时间是 MySQL 的创造。希望他们至少能在过去的时候改变含义......

标签: postgresql timestamp


【解决方案1】:

尝试单引号(例如 '2011-11-09')

【讨论】:

  • 另外:不要使用混合大小写。总有一天它会反噬你。另外:日期是一个保​​留字(类型名)不要使用它,即使它看起来有效。
  • 是的,这是个好建议。 postalCode 错误可能已经是混合大小写错误。
【解决方案2】:

PostgreSQL 有一个“日期时间”类型:timestamp。阅读manual here

如果您希望它们原样,则可以使用双引号"" 作为标识符。最好不要像@wildplasser 建议的那样使用它们。

字符串文字用单引号括起来''

首先阅读章节Lexical Structure。这是非常有用的。 :)

【讨论】:

    【解决方案3】:

    尝试用这种方式重写:

    INSERT INTO log (ip,country,region,city,"postalCode",taken,date) VALUES ('24.24.24.24','US','NY','宾厄姆顿','11111',1,'2011-11-09');

    当您在列名或保留字(例如“column”、“row”等)中使用大小写混合时,您必须使用双引号,而不是值,而您必须使用单引号如您在示例中所见。

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 2015-05-23
      • 2020-01-14
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 2015-06-16
      • 2013-06-23
      相关资源
      最近更新 更多