zoukankan      html  css  js  c++  java
  • sql 触发器 游标

    在数据库中,删除一条记录的同时想要删除另一个表里的数据,这时我们可以选择使用触发器。触发器主要是通过事件进行触发被自动调用执行的,而存储过程可以通过存储过程的名称被调用。触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。

    创建触发器 语法:

    create trigger tgr_name
    on table_name
    with encrypion –加密触发器
    for update...
    as
    Transact-SQL


    对于每次只处理一条记录的情况,使用简单的触发器是没有问题;当一次处理多条数据的时候,简单的触发器满足不了需求,这里给出一个处理方案;触发器和游标结合使用。

    在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源。。

    ALTER TRIGGER [dbo].[deleteClassSetTrigger]    --新建触发器
    ON [dbo].[t_d_ExercitationClassSet]  --在某个表中新建的触发器
    for delete  --做的什么操作触发触发器
    AS
    BEGIN
    declare @id int --定义变量id
    declare cur_delete cursor  --定义游标
    for
    select ExercitationClassSetId from deleted --从删除的数据中找到某个字段值
    open cur_delete  --打开游标
    fetch next from cur_delete into @id 
    while @@fetch_status=0
    begin
    delete t_d_ExercitationClass where ExercitationClassSetId=@id --执行符合条件的SQL语句
    fetch next from cur_delete into @id --查找下一条数据
    end
    close cur_delete --关闭游标
    deallocate cur_delete --删除游标引用
    end




  • 相关阅读:
    nignx重启启动关闭
    Tomcat日志配置
    误删除了mssql的表。 使用命令:drop table xxxx
    使用redis-cli定时执行指定命令
    在crontab中动态写日志
    循环日期的shell
    CountDownLatch、CyclicBarrier、Semaphore 区别
    log4j 知识点
    slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
    HTTP协议中的长连接、短连接、长轮询、短轮询
  • 原文地址:https://www.cnblogs.com/makqiq/p/6134523.html
Copyright © 2011-2022 走看看