Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)aaapublished in(发表于) 2014/7/19 0:09:05 delphi中使用sql server触发器实例
触发器1.利用触发器添加数据用触发器对相关表添加数据时,所添加的记录将存储在系统临时表“inserted”中,可以将该表中的字段信息添加到其他表的相应字段中。在用触发器向其他表添加数据时,应注意表中的字段是否有不为空的记录。下面利用触发器在“tb_Stu”表中添加记录后,在“tb_Mark”表中会自动添加相应的记录。操作步骤如下:(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。(2)主要程序代码如下:with ADOQuery3 dobeginClose;SQL.Clear;SQL.Add('CREATE TRIGGER '+Edit1.Text+' ON dbo.tb_Stu');SQL.Add('FOR INSERT');SQL.Add('AS');SQL.Add('DECLARE @id Int,@name varChar(10)');SQL.Add('Select @id=学生编号,@name=学生姓名 from inserted');SQL.Add('INSERT INTO tb_Mark (学生编号,学生姓名,高数,外语,计算机文化基础,马经,数据库管理,数据结构,软件工程) VALUES (@id,@name,0,0,0,0,0,0,0)');EXECSQL;end;2.利用触发器更新数据在表中更新数据时,将更新前的数据存放在系统临时表“deleted”中,将更新后的数据存放在系统临时表“inserted”中。在触发器中可以根据“deleted”表中的字段对相关表进行查询,并用“inserted”表中的数据修改相关表中的信息。下面利用触发器在“tb_Stu”表中更新记录后,在“tb_Mark”表中会自动更新相关的数据。操作步骤如下:(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。(2)主要程序代码如下:with ADOQuery3 dobeginClose;SQL.Clear;SQL.Add('CREATE TRIGGER '+Edit1.Text+' ON dbo.tb_Stu');SQL.Add('FOR UPDATE');SQL.Add('AS');SQL.Add('DECLARE @id Int,@name varchar(10)');SQL.Add('select @id=学生编号 from deleted');SQL.Add('select @name=学生姓名 from Inserted');SQL.Add('UPDATE tb_Mark SET 学生姓名=@name WHERE 学生编号 = @id');EXECSQL;end;3.利用触发器删除数据在对表中的数据进行删除时,会将删除的记录存入系统临时表“deleted”中,触发器将利用该表中的信息在相关表中进行查询,并删除符合条件的记录。注意:如果某两个表是一对一的关系,那么触发器应创建在从表中。下面利用触发器在“tb_Stu”表中删除记录后,“tb_Mark”表将自动删除相关的记录。操作步骤如下:(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。(2)主要程序代码如下:with ADOQuery3 dobeginClose;SQL.Clear;SQL.Add('CREATE TRIGGER '+Edit1.Text+' ON dbo.tb_Stu');SQL.Add('FOR DELETE ');SQL.Add('AS');SQL.Add('DECLARE @id Int,@name varchar(10)');SQL.Add('select @id=学生编号,@name=学生姓名 from deleted');SQL.Add('Delete tb_Mark where 学生编号=@id and 学生姓名=@name');EXECSQL;end;
赞