触发器是一种特殊的存储过程,无论何时要对它所保护的表进行修改时它就自动执行。触发器由SQL Server自动执行,不能由应用程序调用,便于保护数据库的完整性和完全性。其语法结构为
三、应用实例介绍
以下给出的程序段功能为:在前台Delphi环境下调用存储过程,在服务器由表dbo.all选出符合用户身份的记录生成表dbo.today;由触发器删除部分不合日期要求的记录;再从前台用批量记录移动把dbo.today的内容下载的本地LOCALDATA数据库上data.dbf表。
{在服务器的MYDATA数据库上创建存储过程my_store_prol:}
CREATE PROCDURE my_store_prol
@secu_id int
AS
SELECT*FROM all
WHERE my_table1.no1<=@secu_id
GO
{在MYDATA数据库的表dbo.today上创建触发器:}
CREATE TRLGGER add_no
ON today
FOR INSERT
AS
DELETE*FORM today
WHERE riqi GO |
{在前台程序中执行存储过程my_store_prol:}
Databasel.AliasName:='MYDATA';
Databasel.DatabaseName;='my_database';
Database1.connected;=True;
SourceTable1.DatabaseName;='my_database';
SourceTable1.TableName='dbo.today';
SourceTable1.Active;=True;
StoredProc1.DatabaseName;='My_database';
StoredProc1.StoredProcName:='my_proc';
StoredProc1.Params.Clear;
StoredProc1.Params.CreateParam(ftInteger,'secu_id',ptInput);
StoredProc1.Prepare;
StoredProc1.ExecProc; |
{在前台程序中下载dbo.today的内容到data.dbf表:}
Database2.AliasName:='LOCALDATA';
Database2.DatabaseName:='local_data';
Database2.connectde:=True;
DestinTable1.DatabaseName:='local_data';
DestinTable1.TableName:='data.dbf;
DestinTable1.Active:=True;
BatchMovel.Mode:=batAppend;
BatchMovel.RecordCount:=0
BatchMovel.Source:=SourceTable1;
BatchMovel.Destination:=DestinTable1;
BatchMovel.Execute; |