Как мне указать ширину вычисляемого столбца varchar? - PullRequest
1 голос
/ 20 января 2009

Я хочу создать постоянный вычисляемый столбец в таблице, чтобы я мог использовать его как часть отношения внешнего ключа к другой таблице.

У меня есть эти таблицы:

События (EventID uniqueidentifier, EventCode varchar (8)) - EventCode - это столбец дискриминатора

Стороны (уникальный идентификатор события)

... и я хочу добавить столбец EventCode в «Стороны», чтобы ограничение внешнего ключа могло включать оба столбца.

Я пробовал это:

ALTER TABLE Parties ADD EventCode AS 'PARTY' PERSISTED

Но это добавляет столбец как, я не знаю, char (5) или что-то еще (поскольку тип столбца выводится из выражения). Поэтому я не могу связать его обратно с Events.EventCode, потому что два столбца имеют разную ширину.

Есть ли способ указать ширину вычисляемого столбца, или мне придется сделать это (что кажется уродливым, но я думаю, что будет работать)?

ALTER TABLE Parties ADD EventCode AS CAST('PARTY' AS varchar(8)) PERSISTED

1 Ответ

3 голосов
/ 20 января 2009

Вам нужно привести значение к нужному размеру и типу данных. Размещение статической строки заставит SQL Server использовать CHAR, поскольку это более экономически выгодно, чем VARCHAR.

Если вы хотите сделать это без CAST в определении, тогда вам нужно будет добавить значение из 8 символов 'PARTY' и затем привести его к VARCHAR при выполнении ваших объединений (что снизит производительность базы данных). *

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