【发布时间】:2012-09-29 18:15:51
【问题描述】:
我正在尝试创建一个脚本,该脚本在对数据库运行时会获取一列并将其设置为 NOT NULL。
该列应该是 VARCHAR(50),如果我知道它没有被更改,这将是小菜一碟,但是,我不能确定没有人更改长度,所以我需要确保我不会减小列的大小,例如,如果它被其他人增加到 100。
我希望我能做这样的事情,但它似乎不起作用(假设我已经确定没有 NULL 值):
DECLARE @myColumnLength INT
SET @myColumnLength = (
SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'mytable'
AND column_name = 'mycolumn'
)
ALTER TABLE mytable
ALTER COLUMN mycolumn VARCHAR(@myColumnLength) NOT NULL
有什么想法吗?我是否以错误的方式解决问题?似乎有一种方法可以在不改变列大小的情况下将列设置为 NOT NULL,但我的 Google-fu 今天让我失望了。
【问题讨论】:
标签: sql-server-2005 alter-table notnull