Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2014/7/19 0:09:05
delphi中使用sql server触发器实例

delphi中使用sql server触发器实例

触发器

1.利用触发器添加数据

用触发器对相关表添加数据时,所添加的记录将存储在系统临时表“inserted”中,可以将该表中的字段信息添加到其他表的相应字段中。在用触发器向其他表添加数据时,应注意表中的字段是否有不为空的记录。

下面利用触发器在“tb_Stu”表中添加记录后,在“tb_Mark”表中会自动添加相应的记录。

操作步骤如下:

(1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。

(2)主要程序代码如下:

with ADOQuery3 do

begin

Close;

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 do

begin

Close;

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 do

begin

Close;

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;




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759