如何将以下查询转换为postgresql

时间:2011-10-26 07:26:49

标签: mysql postgresql

CREATE TABLE IF NOT EXISTS `p_reqstats` (
  `sdate` int(10) unsigned NOT NULL,
  `deptID` int(10) unsigned NOT NULL,
  `opID` int(10) unsigned NOT NULL,
  `requests` int(10) NOT NULL,
  `taken` smallint(5) unsigned NOT NULL,
  `declined` smallint(5) unsigned NOT NULL,
  `message` smallint(5) unsigned NOT NULL,
  `initiated` smallint(5) unsigned NOT NULL,
  `initiated_taken` smallint(5) unsigned NOT NULL,
  `rateit` smallint(5) unsigned NOT NULL,
  `ratings` smallint(5) unsigned NOT NULL,
  PRIMARY KEY (`sdate`,`deptID`,`opID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我想知道其实部分:

 PRIMARY KEY (sdate,deptID,opID)
这里出现问题是因为

1 个答案:

答案 0 :(得分:3)

一些问题:

  • 除非您使用的是9.1或更高版本,否则您将无法IF NOT EXISTS
  • PostgreSQL不知道int(10)的含义,只是想要int
  • PostgreSQL不知道unsigned的含义。
  • 引用标识符的反引号是MySQL主义,大多数数据库都使用双引号(标准)。
  • 支持
  • smallint,但int is recommended除非你的磁盘空间不足。

所以这样的事情应该有效:

create table "p_reqstats" (
    "sdate" int NOT NULL,
    "deptID" int NOT NULL,
    "opID" int NOT NULL,
    "requests" int NOT NULL,
    "taken" smallint NOT NULL,
    "declined" smallint NOT NULL,
    "message" smallint NOT NULL,
    "initiated" smallint NOT NULL,
    "initiated_taken" smallint NOT NULL,
    "rateit" smallint NOT NULL,
    "ratings" smallint NOT NULL,
    PRIMARY KEY ("sdate","deptID","opID")
);

如果你需要额外的空格,那么无符号值会给你 那么您可以使用bigint代替int

相关问题