① 如何创建数据库触发器
http://hi..com/史上最强的豆花/blog/item/4e203b002ed85709738b65eb.html
不知道是不是你要的
② Access数据库触发器是什么东西怎么创建及使用
在Access 的帮助里可以查询到:触发器只支持Adp项目,
Mdb数据库可能不行,
关于触发器 (ADP)
全部显示
全部隐藏
注释 本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。
触发器的定义
触发器是一种特殊类型的存储过程,它在特定的表中使用数据修改操作修改数据时才起作用,这些修改操作有:UPDATE、INSERT、或 DELETE。触发器可以查询其他表而且可以包含复杂的 sql 语句。这对于实施复杂的商业规则或要求尤其有用。例如,可依据顾客帐户的状态来控制是否允许插入订单。
触发器对于实施参照完整性也是有用的,参照完整性可使得在表中添加、更新或者删除行时保持表之间已定义的关系。然而,实施参照完整性的最佳方法是在相关表中定义主键和外键约束。如果使用数据库图表,就可以通过创建表之间的关系来自动创建一个外键约束。
使用触发器的优势
触发器在下述几个方面很有用:
触发器是自动的:在对表中的数据修改后(例如手动输入数据或应用程序操作)立即激活触发器,例如手动输入数据或应用程序操作。
触发器能够通过数据库中相关联的表实现级连修改。例如,可以对 titles 表的 title_id 列编写删除触发器,以删除其他表中的匹配行。触发器将 title_id 列用作唯一键,以定位 titleauthor、sales 和 roysched 表中的匹配行。
触发器能够实施比使用检查约束所定义限制更为复杂的限制。与检查约束不同,触发器可以引用其他表中的列。例如,触发器可以回滚试图对价格低于 $10 的书籍(保存在 titles 表中)应用折扣(保存在 discounts 表中)的更新。
③ 数据库触发器怎么创建
是数据库用户。
表示把触发器basarea_update创建在citymanager用户下。
④ 如何创建数据库SQL的触发器问题!
代码如下:
--会员表
if object_id('userinfo','u') is
not null
drop table userinfo
go
create table userinfo(userid int
primary key,user_tegral int,level int)
insert into userinfo select 1,0,0
go
--会员等级表
if object_id('userlevel','u') is not null
drop table
userlevel
go
--插入测试数据
create table userlevel(level int primary
key,mlevel_point decimal(10,2))
insert into userlevel select 0,0
insert
into userlevel select 1,100
insert into userlevel select 2,200
insert
into userlevel select 3,300
go
--触发器
create trigger TR_userInfor
on userinfo for update
as
begin
update a
set a.level=b.level
from userinfo a,userlevel
b
where a.userid in(Select userid from inserted) and
a.user_tegral>=b.mlevel_point and
a.user_tegral<(Select
min(mlevel_point)
from userlevel where mlevel_point>b.mlevel_point)
end
--测试
update userinfo
set user_tegral=100
where
userid=1
select * from userinfo
--另外一个触发器
set ANSI_NULLS
ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [AlterName]
ON
[dbo].[FS_User]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE
dbo.FS_User SET uname=(SELECT uname FROM Inserted)+'@ml'
WHERE id IN (SELECT
id FROM inserted)
END
⑤ 数据库-创建触发器
create table s(sid char(10),sn char(10),sa int)
go --创建s表
create table sc(sid char(10),cid char(10),gr numeric(10,2))
go --创建sc表
create table c(cid char(10),cn char(10),cr numeric(4,2))
go --创建c表
insert into c values('c01','ds',4.0) ;
insert into c values('c02','dbs',3.0);
go --初始化c
create trigger s_sc on s after insert
as
insert into sc
select ins.sid,c.cid,round(100*rand(),0)
from c,inserted ins
go --创建触发器,这里有个小问题成绩随机数每一次触发都是一样的,如果需要不一样可以修改为游标方式
create trigger s_sc2 on s after insert
as
declare @cid char(10)
begin
DECLARE c_cur CURSOR FOR select cid from c
OPEN c_cur
FETCH NEXT FROM c_cur into @cid
WHILE @@FETCH_STATUS = 0
begin
insert into sc
select sid,@cid, round(100*rand(),0)
from inserted
FETCH NEXT FROM c_cur into @cid
end
CLOSE c_cur
deallocate c_cur
end
go --这个触发器采用游标处理,随机数都不一样,完全满足要求,但稍微复杂
⑥ 数据库 创建触发器触发器
疑问1:什么数据库?
疑问2:如果有两个以上部门的项目数都是最少,分给哪个?
数据库不止一种,使用的SQL语法虽然大体相同,但还是各有差异,不说哪个数据库,没法写出确定能在你的库上正常运行的程序.当然,如果你只是要个思路或者pseudo code,那另当别论.
⑦ 在数据库里怎么使用触发器
触发器是一类特殊的存储过程,开发人员也可以定义、编写符合业务需求的触发器来维护数据的完整性。触发器的控制流程及控制语句与存储过程相同,但触发器与存储过程还是有相当大的差别,触发器的定义格式及开启方式与存储过程不同,作为数据管理员或编程人员,熟练掌握触发器的用法对维护、操作数据库非常重要。基本语法1.创建触发器语法格式创建语法:CREATETRIGGER+触发器名称+触发时间点+触发事件+ON+表名+FOREACHROWBEGIN…END其中,触发时间点:BEFORE或AFTER,指明是在触发事件之前还是之后执行。
触发事件:INSERT、UPDATE、DELETE事件。例如,以下语句创建一个名字叫upd_check的触发器,其在对account表作更新(UPDATE)操作之前(BEFORE)自动触发。
CREATETRIGGERupd_…END2.删除触发器语法格式DROPTRIGGER+触发器名称3.触发器案例用tab.sql脚本创建表环境,然后用下面语句创建触发器。当往tab1表添加记录后将触发此触发器,将此新记录同时插入tab2表中。
DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_(tab2_id)values(new.tab1_id);END;//DELIMITER;当用下面语句往tab1表插入记录时,tab2表中同时也添加了同样的记录,如图tab1数据表
tab1数据表
tab2数据表
INSERTINTOtab1(tab1_id)values(')
tab.sql
⑧ 关于数据库建立触发器的问题。
问题需要触发器
只要对两张建立外键关联了用foreign
key
ON
DELETE
CASCADE和ON
UPDATE
CASCADE
⑨ 数据库触发器有什么作用
触发器的作用:
自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。
同步实时地复制表中的数据。
实现复杂的非标准的数据库相关完整性规则。
可在写入数据表前,强制检验或转换数据。
触发器发生错误时,异动的结果会被撤销。
部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。
可依照特定的情况,替换异动的指令 (INSTEAD OF)。
(9)触发器建造数据库扩展阅读:
分类
SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
DML触发器
当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。
DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
DDL触发器
它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。
它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。
登录触发器
登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。
因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。
参考资料来源:网络-触发器
⑩ mysql数据库 建立触发器
貌似你插入的时候就写错了吧
inset into test values (1,2),(5,1),(3,2);少了一个r
正确写法
insert into test values (1,2),(5,1),(3,2)
至于下面错误
我都不明白你要对每一次插入数据作何处理
没插入一条记录,然后就查询一次,这应该逻辑上不合理啊
况且查询不应该作为操作结果返回啊。
给你一个我写的比较经典的触发器
--2.删除好友分组(before,将该分组相片,隶属与的分组改为默认分组)
create trigger T_friend
on table friend
replace delete //之前操作,用下面的操作来替换原本的操作
as
declare @friend_grop_id int
declare @users_id int
select @friend_grop_id=(select friend_grop_id from deleted)
select @users_id=(select users_id from deleted)
if( (select min(friend_grop_id) from friendGrop where users_id=@users_id )=@friend_grop_id)
begin
return -1
end
else
begin
update friend
set friend_in=(select min(friend_grop_id) from friendGrop where users_id=@users_id )
where
(
select min(friend_grop_id)
from friendGrop
where ( select friend_in from friend where friend_grop_id=@friend_grop_id)
)
delete table friendGrop where friend_grop_id=@friend_grop_id
end
触发器的意义与用处主要是激发某些操作,让他们同时发生
例如:假如有一张表,其中个数据列是生日,还有一列是出生年月。
当对生日改变时,触发对触发年月夜做相应改变,
嗯,这个例子举得有点水,数据冗余了……