T-SQL在已经有列中插入一列,并更新(Alert,Update)
来源:互联网 发布:java 进销存教程 编辑:程序博客网 时间:2024/06/13 22:54
--开启系统表写功能,不然无法创建存储过程
exec sp_configure 'allow updates',1 reconfigure with override
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_addfield]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_addfield]
GO
/*--在指定位置添加字段
添加字段到表中的指定位置
注意,字段定义必须符合 alter table add ...的规定
插入的位置从0开始,到字段数目-1结束
如果超过这个范围,则在表的尾部添加字段
一次只能添加一个字段,和 alter table 的限制完全一样
--邹建 2004.07(引用请保留此信息)--*/
/*--使用示例
--测试表
create table tb(a int)
--添加字段
exec p_addfield 'tb','id int',0 --在最前面添加字段
exec p_addfield 'tb','id1 int',0
exec p_addfield 'tb','id2 int',2 --在第2个字段前面添加字段
--显示添加结果
select * from tb
--删除测试
drop table tb
--*/
create proc p_addfield
@tbname sysname,
@fd_define nvarchar(1000), --字段定义(必须是合法的字段定义)
@colid int=-1 --添加位置:0--fieldcount-1,0表示在第一个字段前插入,-1或效的colid表示插入在最后
as
declare @s nvarchar(4000)
if isnull(objectproperty(object_id(@tbname),'IsUserTable'),0)=0
begin
select 错误='无效的表名'
return
end
--添加字段
set @s='alter table ['+replace(@tbname,']',']]')+'] add '+@fd_define
exec(@s)
--如果是添加在所有字段的未尾,则直接返回即可
if not exists(select 1 from syscolumns where id=object_id(@tbname) and colid between 1 and @colid+1)
return
--开启系统表写开关
exec sp_configure 'allow updates',1 reconfigure with override
set xact_abort on
begin tran
update syscolumns set colid=colid+1
where id=object_id(@tbname)
and colid>@colid
update syscolumns set colid=@colid+1
where id=object_id(@tbname)
and colid=(
select max(colid) from syscolumns
where id=object_id(@tbname))
commit tran
--关闭系统表写开关
exec sp_configure 'allow updates',0 reconfigure with override
go
--关闭系统表写功能
exec sp_configure 'allow updates',0 reconfigure with override
go
----------------------
- T-SQL在已经有列中插入一列,并更新(Alert,Update)
- sql插入数据已经存在,则执行update更新
- SQL update 用另外一个表更新一列
- sql server 2005 创建新的一列,并插入数据
- t-sql实现插入,删除,更新记录
- T-SQL update 表中一列为不重复的5位随机数
- 用sql 语句实现在指定列后面插入一列
- SQL Server 触发器中 Update的方法 判断一列是否更新
- SQL Server 触发器中 Update的方法 判断一列是否更新 <转>
- SQL Server 触发器中 Update的方法 判断一列是否更新
- SQL Update 存在则更新,不存在则插入
- T-SQL 关联Update
- 移动文章分类的sql语句,查询并更新同一个表的方法 You can't specify target table 'news_articles' for update in FROM clause
- T-sql实现一列转一行
- T-SQL:插入并返回自增ID
- T-SQL:插入并返回自增ID
- T-SQL:插入并返回自增ID
- T-SQL:插入并返回自增ID
- 跨国公司又出大纰漏,微软的两个中国
- JavaScript 选择时间
- QUOTA 使用者磁盘配额管理
- 标准……
- acegi流程分析之一《Acegi 中的HttpSessionEvent 监听机制 窥视Acegi的 工作流程》 (zz)
- T-SQL在已经有列中插入一列,并更新(Alert,Update)
- 字符串格式化类.....不断添加
- acegi 参考的部分翻译1
- acegi sercurity 简介 (zz)
- Oracle函数速查
- 刚遇到的一个C#中调用api,回调函数的问题
- 换了工作
- 节日快乐
- Winform 用数据库底层类..[修改转帖]