Вставить или заменить, когда столбец соответствует значению - PullRequest
0 голосов
/ 07 января 2020

У меня есть следующая таблица в MySQL:

CREATE TABLE IF NOT EXISTS `test` (
  `gid` INT NOT NULL,
  `x` INT NOT NULL,
  `y` INT NOT NULL,
  `z` INT NOT NULL,
  `type` INT NOT NULL,
  PRIMARY KEY ( `gid`, `x`, `y`, `z` ),
  UNIQUE INDEX myIndex(gid,(CASE WHEN `type` = '1' THEN `type` END))
);

Комбинация gid, x, y, z уникальна. Может быть несколько строк с одинаковым gid и типом, если значения x / y / z различны.

Однако я хочу, чтобы комбинация gid и определенного типа c была уникальной. Например, в gid = x может быть только одна строка с type = 1, но может быть несколько строк с gid = x и type = 2. В настоящее время у меня есть таблица выше в MySQL, но я хочу иметь аналогичная таблица в SQLite. Что я могу сделать, чтобы достичь того же результата?

1 Ответ

0 голосов
/ 07 января 2020

Вам нужен частичный индекс :

CREATE UNIQUE INDEX myIndex ON `test` (gid, type) WHERE type = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...