技不如人

Welcome to Rickel's blog.
随笔 - 56, 文章 - 16, 评论 - 78, 阅读 - 10万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

如何修改一个NOT NULL 栏位

Posted on   Rickel  阅读(812)  评论(0编辑  收藏  举报

   当修改数据库的时候,如果需要修改一个not null栏位时,由于SQL SERVER自动生成的 Constraints  导致不能Alter
需要先Drop掉这个 Constraints 才可以进行。
   关键问题在于 Constraints 是随机生成的,我们无法得到它的名称,不能直接drop。
   该script就是用来解决这个问题的。
   只要修改相应的值就好了

 1Declare @name nvarchar(128)
 2Declare @tableName nvarchar(128
)
 3Declare @columnName nvarchar(128
)
 4Declare @statement nvarchar(4000
)
 5Set @tableName = ''

 6Set @columnName = ''
 7Select @name = [name] From sysobjects Left Join sysconstraints on constid = sysobjects.id 
 8 Where xtype = 'D' And  parent_obj = object_id(@tableName
)
 9 And col_name(parent_obj,colid) = @columnName

10
11if @name > ''

12 begin
13  set @statement = 'Alter Table ' + @tableName + ' Drop Constraint ' + @name
14    +';Alter Table '+ @tableName + '
15     Alter Column '+ @columnName + ' char(5) NOT NULL;'
16  --Select @statement
17  exec sp_executesql @statement
18 end 
19GO

20
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示