使用变量值执行SQL ALTER TABLE STATEMENT

时间:2014-04-10 13:50:27

标签: sql-server tsql variables sql-update alter-table

我在我的数据库表中添加了一个GUID字段,我希望通过创建一个guid值来更新现有用户,然后将其存储到相关字段中,但我似乎无法在使用变量时执行该语句,这里是我的代码:

--Declaration of Script Variables
DECLARE @companyGUID UNIQUEIDENTIFIER
DECLARE @companyDomain NVARCHAR(256)

SET @companyGUID = NEWID()
SET @companyDomain = 'DOMAIN NAME HERE'

--Company Table Update
ALTER TABLE Company ADD GUID UNIQUEIDENTIFIER DEFAULT @companyGUID NOT null
ALTER TABLE Company ADD HasCampaignMonitor BIT
ALTER TABLE Company ADD CampaignMonitorListID NVARCHAR(32)
ALTER TABLE Company ADD CampaignMonitorApiKey NVARCHAR(32)
ALTER TABLE Company ADD CampaignMonitorClientID NVARCHAR(32)
ALTER TABLE Company ADD CampaignMonitorIntegratorID NVARCHAR(16)
ALTER TABLE Company ADD CampaignMonitorRedirectUrl NVARCHAR(256)

UPDATE Company SET GUID = @companyGUID where CompanyID = 1
UPDATE Company SET HasCampaignMonitor = 0 where CompanyID = 1

--User Table Update
ALTER TABLE User ADD GUID UNIQUEIDENTIFIER DEFAULT @companyGUID 
ALTER TABLE User ADD DomainStub NVARCHAR(256) DEFAULT @companyDomain

--Activity Progress Table Update
ALTER TABLE ActivityProgress ADD GUID UNIQUEIDENTIFIER DEFAULT @companyGUID 

--Answer Table Update
ALTER TABLE Answer ADD GUID UNIQUEIDENTIFIER DEFAULT @companyGUID 

1 个答案:

答案 0 :(得分:0)

您不能在alter语句中使用变量。默认值是一个约束,它可以使用任何静态值,某些函数可以作为默认值。

ALTER TABLE修改表的结构,而不是存储的数据。

更改表(可能在GUID列中使用NULL值),更新新列,使用NOT NULL约束更改列。