Спецификация вычисляемого столбца на основе первичного ключа - PullRequest
1 голос
/ 12 февраля 2012

У меня есть поле, которое я хочу вычислить на основе строки и идентификатора, сгенерированного при вставке записи. В основном, когда запись сохраняется с ID = 1, мне нужно, чтобы вычисляемое поле читало 'string_1' и так далее. Я пытаюсь это моя формула (('PV'+'_')+ID), где PV - строка, а ID - поле первичного ключа в той же строке, что и вставленные данные, но я получаю ошибку формулы. Если я добавлю кавычки вокруг идентификатора, то я получу PV_ID, что неправильно. Любая идея, как я могу ссылаться на поле идентификатора в моей формуле и получить значение? Здесь моя структура строки таблицы (ID, Computedfield, data1, data2). мне нужно, чтобы computedfield имел значение поля идентификатора, соединенного со строкой. любая помощь приветствуется EDIT Использование SQL SERVER 2008 R2 Standard

Ответы [ 2 ]

3 голосов
/ 12 февраля 2012

Ваш вопрос не совсем понятен, является ли эта строка префикса строковым литералом или содержимым другого столбца.

Если это литерал , вы должны быть в состоянии сказать,:

ALTER TABLE dbo.YourTable
ADD ComputedColumn AS 'PV_' + CAST(ID AS VARCHAR(10)) PERSISTED

Если это строка, содержащаяся в другом столбце, вы можете определить ее следующим образом:

ALTER TABLE dbo.YourTable
ADD ComputedColumn AS PV + '_' + CAST(ID AS VARCHAR(10)) PERSISTED

при условии, что PV является столбцом (типа VARCHAR), содержащая строку префикса.

Суть заключается в следующем: поскольку вы смешиваете буквальную строку и значение INT, вам необходимо CAST INT в строкупрежде чем соединить эти два.

2 голосов
/ 12 февраля 2012

Используйте формулу:

('PV_'+CAST(ID as varchar))

, если вы хотите сохранить полученное значение - добавьте PERSISTED в конце

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