2013-08-01 3 views
3

У меня есть поле в моей таблице базы данных, в котором я хочу назначить привязку по умолчанию. Значение должно быть таким же, как сгенерированный идентификатор строки.Строка привязки по умолчанию ID

Возможно ли это сделать в опции привязки по умолчанию для проектного представления? Я использую SQL Server 2008.

Редактировать: целью является то, что скопированный идентификатор может измениться позже. Скопированное поле представляет сортировкуKey таблицы. Сортировка таблицы может быть изменена путем переключения sortingKeys из двух строк.

+0

Вы используете SQL Server Management Studio, не так ли? Какая версия? – OzrenTkalcecKrznaric

+1

По какой-либо проблеме, которую вы пытаетесь решить, было бы невозможно, чтобы «NULL» представлял »вместо столбца« ID »этой строки? –

ответ

2

Вы можете сделать это с помощью триггера или получить что-то близкое к вычисленному столбцу. В приведенном ниже примере, если value равно NULL, тогда idOrValue отобразит идентификатор, иначе он покажет значение. Разница между тем, что вы просите, заключается в том, что если значение возвращается к нулевому значению, то вычисленный столбец вернется к id в зависимости от того, возможно ли это по умолчанию, тогда вы получите нуль.

T-SQL

IF OBJECT_ID('tempdb..#t1') is not null DROP TABLE #t1 

CREATE TABLE #t1 (
    id INT IDENTITY, 
    value INT, 
    idOrValue AS coalesce(value, id) 
) 

INSERT INTO #t1 VALUES 
(1), (NULL) 

SELECT * FROM #t1 

Выход

id value idOrValue 
1 1  1 
2 NULL 2 
+0

Немного сложное объяснение, но это прекрасный показ того, что OP может использовать, если это применимо. – OzrenTkalcecKrznaric

+0

Я иду с решением TRIGGER, поскольку это лучше всего подходит для моей цели. Спасибо! – Hazaart

1

Нет, это Computed column specification > (Formula). Там вы должны ввести ID.

Если вы используете его как условие в своем ГДЕ, вы должны проверить опцию Persisted и сделать соответствующий индекс.

HOWEVER, как сказал Damien_The_Unbeliever, это действительно бессмысленное действие. Если вы хотите установить его как значение по умолчанию для нового столбца, я считаю, что вам нужно использовать AFTER TRIGGER. В этом случае вы дублируете this SO discussion.

+1

Это заставит его всегда * быть равно столбцу «ID», который настолько близок к бессмысленному, как вы когда-либо могли бы пожелать. Столбец со значением по умолчанию может быть * изменен * в отдельной строке, что, я полагаю, является поведением, которое ищет OP. –

+0

@Damien_The_Unbeliever: точно мое мышление. mea culpa, мне нужен был счет. Я уточню свой ответ. – OzrenTkalcecKrznaric

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