要修改SQL表中已存在列的默认值,可以使用ALTER TABLE语句。不同数据库系统的语法略有不同,以下是几种主流数据库的实现方式:
ALTER TABLE 表名
ALTER COLUMN 列名 SET DEFAULT 新默认值;
示例:
ALTER TABLE users
ALTER COLUMN created_at SET DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE 表名
ALTER COLUMN 列名 SET DEFAULT 新默认值;
示例:
ALTER TABLE products
ALTER COLUMN price SET DEFAULT 0.00;
ALTER TABLE 表名
ADD CONSTRAINT 约束名 DEFAULT 新默认值 FOR 列名;
注意:SQL Server需要先删除原有的默认约束,再添加新的
-- 1. 查找现有默认约束名
SELECT name FROM sys.default_constraints
WHERE parent_object_id = OBJECT_ID('表名') AND parent_column_id = COLUMNPROPERTY(OBJECT_ID('表名'), '列名', 'ColumnId');
-- 2. 删除现有约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名;
-- 3. 添加新默认值
ALTER TABLE 表名 ADD CONSTRAINT 新约束名 DEFAULT 新默认值 FOR 列名;
ALTER TABLE 表名
MODIFY (列名 DEFAULT 新默认值);
示例:
ALTER TABLE orders
MODIFY (status DEFAULT 'PENDING');
SQLite不支持直接修改列的默认值。你需要:
-- 1. 创建临时表
CREATE TABLE temp_table_name (
-- 包含所有列定义,修改需要的默认值
);
-- 2. 复制数据
INSERT INTO temp_table_name SELECT * FROM original_table;
-- 3. 删除原表
DROP TABLE original_table;
-- 4. 重命名临时表
ALTER TABLE temp_table_name RENAME TO original_table;
注意事项: - 修改默认值不会影响表中已存在的行,只会影响后续插入的行 - 在某些数据库中,默认值必须与列的数据类型兼容 - 在生产环境执行前,建议先在测试环境验证