【问题标题】:Executing a SQL ALTER TABLE STATEMENT with a variable value使用变量值执行 SQL ALTER TABLE STATEMENT
【发布时间】:2014-05-24 06:36:53
【问题描述】:

我在我的数据库表中添加了一个 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 

【问题讨论】:

  • 您真的要多次运行此脚本并且每次运行时都需要@companyGUID 值实际上不同吗?如果没有,只需生成一次 Guid 并将其按字面意思放入脚本中。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2010-11-20
    • 2018-04-27
    • 2012-07-26
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多