在一个触发器里面如何判断触发器的增删改操作

当一个触发器里面同时存在insert,update,delete时,如何按照不同的操作而触发不同的触发器呢?

  但是在效率上没有分开写三个触发器好 ,看不同的需求吧!

如有A、B两表。B表中记录取自A表

A:

ID(PK),     Name,     Sex,     Job,     Address

B:

ID(PK),     Name,     Address

代码如下:

create   trigger   tr_insert_update_delete_A   on   A

for   insert,update,delete

as

if   not   exists(select   *   from   deleted)   --如果是新增

insert   B(Name,Address)   select   Name,Address   from   inserted

else   if   not   exists(select   *   from   inserted)   --如果是删除

delete   B   from   deleted   d   where   B.Name=d.Name

else  if(select count(*) from deleted)>0 and (select count(*) from inserted)>0     --如果是更新

update   B   set   Name=i.Name,Address=i.Address

from   B,inserted   i,deleted   d

where   i.Name=d.Name   and   i.Name=b.Name

注意在逻辑虚拟表deleted和inserted在执行批量操作时是多个记录同时存在而不是一条条的循环执行!

自定义错误消息: raiserror( ‘不允许同时更新多条记录的主键值,更新被取消! ‘,1,16)

示例使用 isnumeric 返回所有非数值的数据行。

select * from CDS_Guest

where isnumeric(name)=0;

Go

示例使用 isdate 测试某一字符串是否是有效的 datetime。

if isdate(‘2009-05-12 10:19:41.177‘)=0

print ‘有效的日期‘

else

print ‘无效的日期‘

时间: 2024-10-05 13:36:08

在一个触发器里面如何判断触发器的增删改操作的相关文章

MySQL增删改操作

增删改操作 增加 看语法 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); #指定字段来插入数据,插入的值要和你前面的字段相匹配 语法二: INSERT INTO 表名 VALUES (值1,值2,值3-值n); #不指定字段的话,就按照默认的几个字段来插入数据 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3-) VALUES (值1,值2,值3-); 3. 插

【2017-05-02】winform弹出警告框是否进行增删改操作、记事本制作、对话框控件和输出输入流

一.winform弹出警告框是否进行增删改操作 第一个参数是弹出窗体显示的内容,第二个参数是标题,第三个参数是该弹窗包含确定和取消按钮. 返回的是一个枚举类接收一下. 再进行判断,如果点的是确定按钮,再进行下一步的增删改操作. 二.记事本的制作 1.菜单工具栏MenuStrip-插入标准项 2.TextBox -显示部分 小箭头 MultiLine 选中多行 Dock属性占满. 3.功能 - 撤销 - 剪切 - 粘贴 - 复制 - 删除 - 全选 - 时间 - 查找 单独做一个窗体点击打开 把主

Jquery easyui开启行编辑模式增删改操作

来源:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </table> 引入JS文件和CSS样式 <script src="http://www.cnblogs.com/Resources/jquery-easyui-1.2.3/jquery-1.4.4.min.js

[转]Jquery easyui开启行编辑模式增删改操作

本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </table> 引入JS文件和CSS样式 <script src="http://www.cnblogs.com/Resources/jquery-easyui-1.2.3/jquery-1.4.4.min.

Jquery easyui开启行编辑_增删改操作及新增就能编辑

下面这个是一个单独的js文件,可以直接在页面引入他就可以用了 主要有三种方式实现编辑模式增删改操作 1.直接双击选中编辑 2.选中行点击修改按钮编辑 3.右键选择相关的操作 可能中间有部分功能没有实现 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 引入自定义的js文件 --> <script type="t

详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. 操作数据库 7. 关闭连接 代码如下: ******************连接数据库******************* 1 package zj6_Test; 2 import java.sql.*; 3 public class Zj6_3 { 4 /** 5 * 使用Statement接口

JavaScript--DOM增删改操作

JavaScript使用DOM操作节点来进行增删改操作 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JavaScript操作DOM节点</title> <script type="text/javascript"> var flag = "帐号"; var flag1 = 0; funct

表格的增删改操作

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>表格的增删改操作</title> <script type="text/javascript"> function createTable() { var body = document.getElementById(&quo

6.DOM对HTML元素的增删改操作

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>节点的增删改操作</title> <script type="text/javascript"> function createNode(){ //创建一个li元素 var li = document.createElement(

使用PreparedStatement接口实现增删改操作

直接上下代码: 1 package com.learn.jdbc.chap04.sec02; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 6 import com.learn.jdbc.model.Album; 7 import com.learn.jdbc.util.DbUtil; 8 /** 9 * 使用PreparedStatement接口实现增删改操作 10 * @author Admini