Я работаю с SQL Server 2008. Действительно ли возможно изменить вычисляемый столбец, на самом деле не отбрасывая столбец и затем добавляя его снова (который я могу взяться за работу)? Например, у меня есть эта таблица:
CREATE TABLE [dbo].[Prices](
[Price] [numeric](8,3) NOT NULL,
[AdjPrice] AS [Price] / [AdjFactor],
[AdjFactor] [numeric](8,3) NOT NULL)
Позже понимание, что у меня есть потенциальное деление нулевой ошибкой, я хочу изменить столбец [Adjprice] для обработки этого, но если я просто отбрасываю столбец и добавляю его снова, я теряю порядок столбцов.
Я хочу сделать что-то как:
ALTER TABLE dbo.[Prices]
ALTER COLUMN [AdjPrice] AS (CASE WHEN [AdjFactor] = 0 THEN 0 ELSE [Price] / [AdjFactor] END)
Но это не корректно. Если бы это возможно, или существует другое решение, я ценил бы справку.
НЕТ
если это вычислено, что за такое, отбрасывая его и добавляя снова? это ПРОДОЛЖАЕТСЯ и есть миллион строк?
Я не думаю, что вы можете изменить этот столбец без удаления. Так что отбросьте столбец, а затем добавьте новый столбец.
Если вы найдете другой способ сделать это, пожалуйста, сообщите мне.
К сожалению, вы не можете сделать это, не отбросив сначала столбец.
Из MSDN :
ALTER COLUMN
Указывает, что именованный столбец должен быть изменен или изменен. ALTER COLUMN не допускается, если уровень совместимости 65 или ниже. Дополнительные сведения см. В разделе sp_dbcmptlevel (Transact-SQL).
Измененный столбец не может быть одним из следующих:
- Вычисляемый столбец или используемый в вычисляемом столбце.