MySQL Уникальное ограничение - PullRequest
0 голосов
/ 15 марта 2012

У меня есть простая таблица с 3 столбцами.

| prefix | phoneNumber | verifiedDate |
------------------------------------------

VerifiedDate может содержать значение Null

, как я могу наложить это ограничение на мою базу данных?Одна строка для каждого уникального префикса и phoneNumber существует , если VerifiedDate не равен NULL.

Дублирование prefx & phoneNumber допускается только в том случае, если нет строки, содержащей prefx & phoneNumber и verifyDate не NULL!

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Общая идея состоит в том, чтобы написать запрос, который возвращает «неверные данные», а затем в триггерном тесте этот запрос является пустым набором, например, что-то вроде

DECLARE unique_tally INT;
SET unique_tally = 0;  

SELECT COUNT(*) 
  INTO unique_tally
  FROM (
        SELECT prefix, phoneNumber, COUNT(*) AS tally
          FROM SimpleTable
         WHERE verifiedDate IS NOT NULL
         GROUP 
            BY prefix, phoneNumber
       ) AS DT1
 WHERE tally > 1;

IF ( unique_tally > 0 ) THEN
   -- Fail
0 голосов
/ 15 марта 2012

Единственный способ, которым я знаю, это использовать Триггеры SQL .

Вот несколько полезных ресурсов для mysql:

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