SQL删除有默认值字段(转)

本文介绍了一段SQL脚本,该脚本用于从指定表中删除默认约束,并随后删除指定的列。首先通过连接多个系统表来查找目标约束的名称,然后使用动态SQL来执行删除约束的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

declare   @dfname   varchar(50)  
select   @dfname=a.name  
from   sysobjects   a
inner join   syscomments   b   on   a.id=b.id  
inner join   sysconstraints   c   on   c.constid=a.id  
inner join   syscolumns   d   on   c.colid=d.colid   and   c.id=d.id  
where   a.xtype='D'   and   object_name(d.id)='表名'  and   d.name='列名'  
if   @dfname   is   not   null  
  exec('alter   table   表名   drop   constraint   '+@dfname)  
Go
alter   table   表名   drop   column   列名
Go

sql添加字段描述添加默认值删除字段 //删除 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JHCRM_Report_ss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [JHCRM_Report_ss] //添加 if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) create table [Table1] ([col1] int,[col2] int) //添加字段 if not exists( select * from syscolumns where syscolumns.[name]='FNewObjectEnd' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[jsc_financial]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE jsc_financial ADD FNewObjectEnd int--NULL --添加先用项目结项数 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'先用项目结项数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'jsc_financial', @level2type=N'COLUMN',@level2name=N'FNewObjectEnd' if not exists( select * from syscolumns where syscolumns.[name]='Record_Money' and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[JHCRM_Resource_Record_Main]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE JHCRM_Resource_Record_Main ADD Record_Money numeric(12, 2)--NULL --资源费用 go EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'资源费用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'JHCRM_Resource_Record_Main', @level2type=N'COLUMN',@level2name=N'Record_Money' //删除字段 if not exists( select * from syscolumns where syscolumns.[name]=table_Name and syscolumns.[id]=(select id from dbo.sysobjects where id=object_id(N'[dbo].[tableName]')" and OBJECTPROPERTY(id, N'IsUserTable') = 1) ) ALTER TABLE table_Name DROP COLUMN tableName
SQL 中修改字段默认值,具体语法可能会因不同的数据库管理系统而有所不同。以下是一些常见数据库管理系统的操作方式: ### 修改字段默认值的方法 1. **MySQL** 在 MySQL 中,如果字段已有默认值,则需要先删除原有的默认值,再设置新的默认值。可以使用 `ALTER TABLE` 和 `ALTER COLUMN` 语句来实现: ```sql -- 删除原有默认值 ALTER TABLE 名 ALTER COLUMN 字段名 DROP DEFAULT; -- 设置新的默认值 ALTER TABLE 名 ALTER COLUMN 字段名 SET DEFAULT 新默认值; ``` 2. **SQL Server** 在 SQL Server 中,修改字段默认值需要先删除原有的约束,然后重新添加带有新默认值的约束: ```sql -- 删除原有默认约束 ALTER TABLE 名 DROP CONSTRAINT 约束名称; -- 添加新的默认约束 ALTER TABLE 名 ADD CONSTRAINT 约束名称 DEFAULT 默认值 FOR 字段名; ``` 如果不确定约束名称,可以通过系统视图查询相关信息 [^4]。 3. **PostgreSQL** PostgreSQL 提供了直接修改字段默认值的功能,无需手动删除原有默认值: ```sql -- 直接修改字段默认值 ALTER TABLE 名 ALTER COLUMN 字段名 SET DEFAULT 新默认值; ``` 4. **Oracle** Oracle 数据库中修改字段默认值的方式与 PostgreSQL 类似,可以直接使用 `ALTER TABLE` 语句进行修改: ```sql -- 修改字段默认值 ALTER TABLE 名 MODIFY (字段名 DEFAULT 新默认值); ``` ### 注意事项 - 在执行修改默认值之前,请确保了解当前字段是否存在默认值约束,避免出现冲突。 - 某些数据库(如 SQL Server)可能要求明确指定 `WITH VALUES` 来更新现有数据行的默认值 [^2]。 - 建议在修改前备份数据或验证约束对现有数据的影响,以防止数据不一致问题 [^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值