Как перевести следующий запрос в postgresql - PullRequest
1 голос
/ 26 октября 2011
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 Ответ

3 голосов
/ 26 октября 2011

Несколько проблем:

  • У вас не будет IF NOT EXISTS, если вы не используете 9.1 или выше.
  • PostgreSQL не знает, что означает int(10),вы просто хотите int.
  • PostgreSQL не знает, что означает unsigned.
  • Обратные кавычки для цитирования идентификаторов - это MySQLism, большинство баз данных используют двойные кавычки (стандарт).
  • smallint поддерживается, но рекомендуется int , если вы не занимаетесь дисковым пространством.

Так что-то вроде этого должно работать:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...