`
wsql
  • 浏览: 12098360 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

用触发器实现动态新增列

 
阅读更多

create table ta(number int)

create trigger test_tr on ta
for insert
as
begin
DECLARE @number int,@sql varchar(4000),@sql1 varchar(4000),@i int
DECLARE roy CURSOR
FOR SELECT * from inserted
OPEN roy
FETCH next FROM roy into @number
WHILE @@FETCH_STATUS = 0
begin
begin
if exists(select 1 from sysobjects where name='tb' and xtype='U')
begin
select @i=max(colid)+1 from syscolumns where id=object_id('tb')
set @sql=N'alter table tb add C'+cast(@i as varchar)+' int null'
set @sql1=N'update tb set C'+cast(@i as varchar)+'='+cast(@number as varchar)
--print @sql
--print @sql1
exec(@sql)
exec(@sql1)
end
else
begin
set @sql=N'create table tb(C1 int)'
set @sql1=N' insert tb select C1='+cast(@number as varchar)
exec(@sql)
exec(@sql1)
end
end
FETCH NEXT FROM roy INTO @number
end
CLOSE roy
DEALLOCATE roy
end
测试:
insert ta
select 10 union all
select 13 union all
select 18 union all
select 26
查询:
select * from tb

C1 C2 C3 C4
----------- ----------- ----------- -----------
10 13 18 26

(所影响的行数为 1 行)

--drop table ta,tb

分享到:
评论

相关推荐

    触发器练习答案(附有测试文档)

    - 这个触发器实现了SC表与SC_NUMBER表之间的联动更新逻辑。 - 通过`IF INSERTING OR UPDATING`分支实现插入或更新操作时对SC_NUMBER表的更新。 - 通过`IF DELETING`分支实现删除操作时对SC_NUMBER表的更新。 2. ...

    SQLSERVER触发器插入数据

    本篇文章主要介绍如何在SQL Server中使用触发器来实现数据的自动插入功能。触发器是一种存储过程,它定义在特定的表上,并且在特定的事件(如插入、更新或删除操作)发生时自动执行。 #### 二、描述详解 描述中的...

    MySQL触发器.pdf

    自1995年首次发布以来,MySQL不断进化,新增了如存储过程、触发器、视图等高级功能,满足了日益增长的业务需求。随着版本的迭代,MySQL不仅在技术上持续创新,也在社区支持和文档资源方面投入大量精力,成为数据库...

    oracle快速批量生成表和触发器和序列.zip

    下面将详细介绍这些概念以及如何在Oracle中实现它们。 1. **表(Table)**:在Oracle数据库中,表是存储数据的主要结构,由列和行组成。创建表通常涉及定义列的数据类型、约束(如主键、外键、唯一性等)和其他特性...

    mysql触发器教程

    触发器是MySQL 5.0版本的重要新增特性之一,它使得数据库管理员能够更加灵活地控制数据的修改方式,并能够执行复杂的业务逻辑。通过合理设计和应用触发器,不仅可以增强数据的完整性和一致性,还可以提高应用程序的...

    关于触发器的知识很受用

    3. **跨表引用**: 触发器可以引用其他表中的列,这是`CHECK`约束无法做到的。 4. **数据修改前后的状态评估**: 触发器可以评估数据修改前后的表状态,并根据其差异采取对策。 5. **多触发器支持**: 允许在一个表中...

    基于SQL Server触发器的数据完整性应用.pdf

    inserted表用于存放因INSERT或UPDATE触发器而新增的数据,而deleted表则保存因DELETE触发器而被删除的数据。 文章通过学生成绩数据库XSCJ的实例,展示了触发器如何实现数据完整性。例如,可以通过触发器来检查学生...

    利用SQL Server触发器实现表的历史修改痕迹记录

    在实现历史修改记录功能时,我们通常使用`AFTER`触发器,因为它能够确保在记录变更信息之后再执行其他数据库操作。例如,我们可以创建以下两个触发器: 1. `tr_product_i`:这是一个`AFTER INSERT`触发器,当有新的...

    SQL中如何创建触发器.pdf

    总结来说,在SQL中创建触发器可以大大增强数据库操作的自动化程度,实现对数据变化的监控与反应,维护数据的一致性和完整性。触发器的使用场景包括数据校验、审计日志记录、自动更新统计数据、执行复杂的数据变更...

    SQL Server触发器和事务用法示例

    - **新增和删除触发器**(INSERT, DELETE):在给定的示例中,`tri_TC` 触发器会在表`t_c`上对INSERT和DELETE操作做出响应。当有新的记录插入时,触发器会将这些新记录复制到`t_c2`表;当有记录被删除时,触发器会...

    Excel-VBA宏编程实例源代码-随机新增引用对象设置.zip

    在这个实例中,可能会有一个名为"RandomReferenceAdder"的Sub过程,用于实现随机新增引用对象的功能。 在VBA中,引用对象可能指的是工作表(Worksheet)、工作簿(Workbook)、单元格(Range)或其他Excel对象。...

    SQL 新增/修改 表字段列的类型等

    通过使用 ALTER TABLE 语句,可以实现对表结构的修改,包括添加或删除列、修改列类型、添加或删除约束等。 首先,让我们来看一下 ALTER TABLE 语句的基本语法: ALTER TABLE table_name { [ ALTER COLUMN column_...

    数据分析核心知识点总结 —— SQL.pdf

    - **使用`VALUES`实现单行新增**:通过指定列名和对应的值,将数据插入到表中。 - **使用`SELECT`实现单行新增**:通过查询语句获取数据并插入。 - **建表新增**:利用`SELECT ... INTO`语句,将一个表的数据复制...

    王玄韬《MySQL数据库基础》卷2.doc

    * 修改数据,包括新增商品信息、修改订单状态、替换商品类别表备注列等 三、数据查询 * 实现各种数据查询操作,包括 + 查询显示数码类商品数量 + 查询显示 A1001 订单价格 + 查询打八折订单的数量 + 查询显示...

    SQL Serve 自动编号实例

    最后,通过触发器实现了 `num` 字段的自动递增功能,确保每张新添加的桌子都能获得唯一的编号。 这种方式在实际应用中非常实用,特别是在需要连续编号的场景下,例如订单号、发票号等。通过合理地设计和实现自动...

    数据库(SQL ORCAl)参考手册

    - **触发器实现数据完整性的处理**:利用触发器来维护数据完整性。 - **已创建的触发器的查询**:查询已创建的触发器。 - **INSTEAD OF触发器**:替代原本的操作,如插入、更新或删除。 - **DDL触发器数据库级别**:...

    mysqlalter命令共5页.pdf.zip

    `将新增一列到表的末尾。 2. **删除列**:若需移除不再需要的列,可以使用`DROP COLUMN`语句。例如,`ALTER TABLE 表名 DROP COLUMN 列名;`会将指定列从表中删除。 3. **修改列**:要改变列的属性,如数据类型、...

    datagrid-detailview 将+号放在任意列的后面

    在描述中提到的“将+号放在任意列的后面”,意味着用户可以自定义展开/收缩详细视图的触发器图标的位置。 在JavaScript中,我们经常通过添加或修改DOM元素以及绑定事件来实现这样的自定义功能。根据描述,这里新增...

    福建省电力公司oracle培训教材--ORACLE的逻辑结构及其管理

    修改表结构通常涉及添加约束(如主键)、新增列或调整列的宽度。例如,可以使用`ALTER TABLE`语句添加主键、新列或修改列的定义。Oracle Enterprise Manager的Schema Manager提供了一种直观的图形界面来管理表。 5...

    lucene与sqlserver数据库实现索引的简单实例

    可以设置定时任务或触发器来实现这一过程。 在实际应用中,可能还需要考虑如错误处理、性能优化、多线程索引、分布式搜索等高级话题。同时,为了简化开发流程,有一些第三方库如Solr和Elasticsearch提供了更高级的...

Global site tag (gtag.js) - Google Analytics