由于SQL性能优化或业务需求,往往在创建Table后需要扩展主键的长度,直接进行Alter Column会提示"ALTER TABLE ALTER COLUMN XXX failed because one or more objects access this colum",导致主键无法修改。这时可以使用DISABLE And ENABLE CHANGE_TRACKING临时取消约束,修改后再启用约束操作。
IF EXISTS ( SELECT 1
FROM sys.columns
WHERE name = '要修改的字段'
AND object_id = OBJECT_ID('要修改的表') )
BEGIN
IF EXISTS ( SELECT 1
FROM sys.change_tracking_tables
WHERE object_id = OBJECT_ID('要修改的表') )
BEGIN
ALTER TABLE 要修改的表 DISABLE CHANGE_TRACKING -- disable tracking
ALTER TABLE 要修改的表 ALTER COLUMN 要修改的字段 VARCHAR(50) NOT NULL
ALTER TABLE 要修改的表 ENABLE CHANGE_TRACKING -- enable tracking
END
ELSE
BEGIN
ALTER TABLE 要修改的表 ALTER COLUMN 要修改的字段 VARCHAR(50) NOT NULL
END
END
本文介绍在SQL中遇到主键无法修改的问题时,如何通过临时禁用和启用变更跟踪来解决,确保数据库表结构的顺利调整。
2842

被折叠的 条评论
为什么被折叠?



