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

前言

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

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;
相关推荐
要开心吖ZSH34 分钟前
软件设计师备考-(十四)数据库设计
java·数据库·软考·软件设计师
xrkhy35 分钟前
阿里云对象存储OSS的使用
java·数据库·阿里云
少年攻城狮1 小时前
SpringAI系列---【如何把ChatClient集成向量数据库SimpleVectorStore并实现RAG?】
数据库
问道飞鱼1 小时前
【数据库相关】TxSQL新增数据库节点步骤
数据库·mysql·txsql·新增节点
张人玉2 小时前
SQLSERVER数据备份
数据库·oracle·sqlserver
Ka1Yan2 小时前
MySQL索引优化
开发语言·数据结构·数据库·mysql·算法
TDengine (老段)2 小时前
TDengine 时间函数 TIMETRUNCATE 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Mors.3 小时前
dbeaver工具连接inceptor星环数据库
数据库
TG_yunshuguoji4 小时前
阿里云国际代理:阿里云的云数据库是什么?
服务器·数据库·安全·阿里云·云计算
huazhixuthink5 小时前
PostgreSQL三种关闭方式的区别
数据库·postgresql