ASP.NET通过Insert触发器对数据进行添加操作
|
触发器是一种特殊的存储过程,它针对数据表进行操作。当数据表进行更新操作时,在触发器内指定的操作就会自动执行。下面以SQL Server数据库为例,介绍如何通过触发器操作数据库中的数据。 1.方案分析 触发器与视图和存储过程一样被广泛应用于数据库的应用开发中,它不但可以提高查询速度,减少查询开销,而且,可以辅助实现安全策略,提供更高的安全保证,保证数据不会被非法窃取,这是程序开发人员必须掌握的一项基本技术。在应用程序当中应用触发器可以代替繁琐的程序代码,完成相应的功能。由于触发器可以查询其他表,而且可以包含复杂的Transact-SQL语句,所以可以实现强制性的、复杂的业务规则或要求。 触发器实质是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在(这点与约束十分类似)。触发器又不像存储过程那样需要调用才能执行,而是在对表中数据进行增、删、改(INSERT,UPDATE,DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤消错误。 在Microsoft SQL Serverk中使用触发器的优点可概括如下。 (1)触发器可以实现外键约束的功能,实现对表的级联修改。 (2)触发器可以实现核查约束的功能,而且其功能更为强大。 (3)如果对表中数据进行了增删改的操作,使用触发器可以根据修改前后的差异,采取对应的对策。 (4)允许在一个表中针对不同的增删改操作设置多个触发器,以完成各类不同任务。 触发器在SQL Server中的基本应用可大体概括为Insert型触发器、Update型触发器、Delete型触发器、嵌套型触发器和递归触发器 同样道理,对于一个定义了Delete型触发器的表来讲,一旦对某表执行了删除操作,则将所有删除行放至删除表中。这样做的目的是,一旦触发器遇到了强迫它中止的语句被执行时,删除的那些行可以从删除表中得以恢复。 需要强调的是,在使用Update型触发器时,更新操作包括两个部分,即先将更新的内容去掉,然后将新值插入。因此,对于一个定义了Update型触发器的表来讲,当进行更新操作时,在删除表中存放了旧值,然后在插入表中存放新值。 为了更好地理解Update型触发器,在此举一个小示例,例如当对表sales进行修改操作时,将删除的数据行备份到sales_delbak删除表中,将新插入的数据行备份到sales_insbak插入表中。 在查询分析器里建立一个Update触发器,其语法如下 /*打开数据库*/ 在查询分析器执行以下语句,可查看其操作的结果,由于此查询操作比较简单,这里不赘述。 updatesalessetBookName="ASP.NET技术方案宝典"whereid=1 说明:关于嵌套型触发器和递归触发器的应用请参见本节的补充说明。 总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其他表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见,触发器所参照的其他表的位置决定了操作要花费的时间长短。 2.实施过程 本实例主要实现在添加新员工基本信息的时候,利用Insert触发器在员工工资表里添加上新员工的编号和新员工的名称,并且把新员工的工资初始化为Y1000。 在相应的文本框中输入新员工的各项注册信息。单击【注册】按钮,将触发数据库中“employeeInfo”数据表的“员工工资触发器”,并将新员工的工资初始化为1000,保证了数据库中的数据的一致性。 数据库支持:建立两个表,一个表为员工信息表"employeeInfo"(字段有:EmpID(员工编号),EmpName(姓名),Number(身份证号),Phone(联系电话));另一个表为员工工资表"employeePay"(字段有:employeeID(员工编号),employeeName(员工姓名),employeePay(工资))。 在查询分析器里建立Insert触发器其语法如下: /*打开数据库*/ 创建完触发器后,应用程序的开发步骤如下。 (1)新建一个ASP.NET网站,命名为11,Web页默认名为Default.aspx (3)主要程序代码如下。 双击【注册】按钮触发该按钮的Click事件,在该事件中执行对数据库的添加操作,代码如下。 protectedvoidButton1_Click(objectsender,EventArgse) 注意:在编写上述代码前,必须引用using System.Data.SqlClient命名空间 |
