2014-12-03 1 views
0

У меня есть следующая таблица с двумя столбцами:Как обеспечить ограничение исключения?

A - int (null) 
B - int (null) 

Там должно быть значение в А или В, но не оба. Как создать это ограничение?

Без дополнительного столбца IDENTITY существует ли способ принудительного использования составного первичного ключа в этой таблице из-за допустимости двух нулевых столбцов?

+0

Что вы подразумеваете под «составным первичным ключом»? Есть ли требование к уникальности? –

+0

Это составной первичный ключ. Так что да - он должен быть уникальным. – 4thSpace

+0

Что должно быть уникальным? Комбинация '(A, B)' или 'A UNION ALL B'? –

ответ

1
create table t 
( 
    a int, 
    b int, 
    CONSTRAINT null_const CHECK ((a is not null and b is null) or 
           (b is not null and a is null)) 
); 
+0

Спасибо. Вы также можете показать составной первичный ключ? – 4thSpace

+0

Этот синтаксис создает ошибки в ограничении: столбец «b» ссылается на другой столбец «t». – 4thSpace

+0

Работает для меня: http://sqlfiddle.com/#!3/f976b/1 –

 Смежные вопросы

  • Нет связанных вопросов^_^