2013-11-21 1 views
1

Можно ли иметь абсолютное значение как ограничение в SQL 2008. Что-то вроде этого:ABS, как ограничение в SQL

ALTER TABLE [dbo].[myTable] WITH NOCHECK ADD 
CONSTRAINT [IX_Blah] UNIQUE NONCLUSTERED 
(
    ABS([ID_1]), 
    [ID_2] 
) ON [PRIMARY] 

В моей таблице ID_1 может быть отрицательным. Так что вам необходимо пройти проверку, что у меня нет записей с

ID_1 ID_2 
    1  1 
-1  1 

Их следует учитывать одинаково и не допускать.

спасибо.

+1

Это один из тех времен, я бы сказал попробовать и узнать. – xQbert

+0

Я пробовал, я не могу сделать это точно, как опубликовано, поэтому я сказал «что-то вроде». Может быть, вокруг есть работа? – chibis

ответ

4

Я предполагаю, что вы пробовали его и получили сообщение об ошибке.

Нет, уникальные ограничения не могут содержать формулы. Вы можете однако, иметь уникальное ограничение на колонке вычислен:

ALTER TABLE myTable 
ADD ID_3 AS ABS(ID_1) 

ALTER TABLE [myTable]ADD 
CONSTRAINT [IX_Blah] UNIQUE NONCLUSTERED 
(
    [ID_3], 
    [ID_2] 
) 
+0

Спасибо, это звучит неплохо. Однако у меня есть ограничения. Я не могу добавить поля в эту таблицу. Что еще я могу сделать? – chibis

+0

Не как уникальное ограничение, о котором я знаю. Вам придется принудительно применять его через триггеры или приложение, которое выполняет вставки. –

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