数据库—修改某字段默认值

前言

有时候,数据库的字段默认值没有正确设置,这时候需要改默认值。以下是我做的改默认值的记录,希望对网友有所帮助。

1.SQL SERVER

下面的示例假设你要修改名为 YourColumnName 的字段,并为其设置一个新的默认值 NewDefaultValue。你需要根据实际情况替换 YourColumnNameNewDefaultValue。如果默认值是字符串,则在外层加单引号

复制代码
DECLARE @TableName NVARCHAR(255),
        @ColumnName NVARCHAR(255),
        @ConstraintName NVARCHAR(255),
        @SqlCommand NVARCHAR(MAX);

-- 如果游标存在,先关闭并释放
IF CURSOR_STATUS('global', 'TableCursor') >= -1
BEGIN
    DEALLOCATE TableCursor;
END

-- 游标遍历包含指定列的所有表
DECLARE TableCursor CURSOR FOR
SELECT t.name AS TableName, c.name AS ColumnName
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name = 'YourColumnName'; -- 替换为你的字段名

OPEN TableCursor;

FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- 获取现有默认约束名
    SELECT TOP 1 @ConstraintName = dc.name 
    FROM sys.default_constraints dc 
    INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
    WHERE c.name = @ColumnName AND OBJECT_NAME(dc.parent_object_id) = @TableName;
    
    IF @ConstraintName IS NOT NULL
    BEGIN
        -- 删除旧的默认约束
        SET @SqlCommand = 'ALTER TABLE [' + @TableName + '] DROP CONSTRAINT [' + @ConstraintName + ']';
        EXEC sp_executesql @SqlCommand;
    END
    
    -- 添加新的默认值
    SET @SqlCommand = 'ALTER TABLE [' + @TableName + '] ADD CONSTRAINT [DF_' + @TableName + '_' + @ColumnName + '] DEFAULT (NewDefaultValue) FOR [' + @ColumnName + ']'; -- 修改这里的默认值
    EXEC sp_executesql @SqlCommand;
    
    FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;
END

CLOSE TableCursor;
DEALLOCATE TableCursor;
相关推荐
SAP小崔说事儿6 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
川贝枇杷膏cbppg7 小时前
asmcmd
数据库·oracle
JIngJaneIL7 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
IndulgeCui7 小时前
基于CentOS7 DM8单机部署配置记录-20251216
数据库
surtr18 小时前
关系代数与关系型数据库
数据库·sql·数据库系统
学海_无涯_苦作舟8 小时前
MySQL面试题
数据库·mysql·面试
老邓计算机毕设8 小时前
SSM校内二手书籍交易系统的设计与实现an1k0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 框架开发·ssm 校内二手书籍交易系统
天行健,君子而铎9 小时前
高性能、可控、多架构:教育行业数据库风险监测一体化解决方案
数据库·架构
Stella25219 小时前
实习日志|知识总结
linux·服务器·软件测试·数据库