⑴ Sql 2000数据库怎么创建触发器,有谁会,截个图显示出来看一下
1.使用T-SQL语句创建触发器
创建触发器使用CREATE TRIGGER语句。 语法格式如下:
CREATE TRIGGER 触发器名ON 表名 [WITH ENCRYPTION]
FOR {[DELETE][,][INSERT][,][UPDATE] } [NOT FOR REPLICATION] AS
SQL语句
[RETURE 整数表达式]
触发器作为一种数据库对象,在syscomment 表中存储有完整的文本定义信息。可以使用WITH ENCRYPTION 对访问syscomment表的入口进行加密。
NOT FOR REPLICATION: 定义在复制过程中,不执行触发器操作。 【例1】创建一个针对LWQK 表的触发器,打印共修改了多少行数据。
use lwzz
if exists (select name from sysobjects where name='tr_lwqk_update' and type='tr') drop trigger tr_lwqk_update go
use lwzz go
create trigger tr_lwqk_update on lwqk for update as
declare @msg varchar(100)
select @msg=str(@@rowcount)+'lwzz updated by this statement' print @msg return
go
在CREATE TRIGGER语句中不能使用SELECT语句返回对表格查询的数据,因为触发器不接受用户应用程序传递的参数,从而也无法向用户应用程序返回查询表格数据所得到的结果。 在创建触发器的语句中,禁止使用下列T-SQL语句: ALTER DATABASE ALTER PROCEDURE ALTER TABLE ALTER TRIGGER ALTER VIEW CREATE DATABASE CREATE DEFAULT CREATE INDEX CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE TRIGGER DROP DATABASE DROP DEFAULT DROP INDEX DROP PROCEDURE DROP RULE DROP TABLE DROP TRIGGER DROP VIEW
GRANT RESTORE DATABASE RESTORE LOG REVOKE
TRUNCATE TABLE
由于系统表所存储数据的特殊性和重要性,所以建议用户不要自己在系统表上建立触发器。 在创建触发器时,不允许RETURN返回体现运行状态的数据。
【例2】创建一个当LWQK表执行INSERT、UPDATE操作时触发的触发器。
create trigger tr_procts_insupd
on lwqk
for insert,update as
……
由于SQL Sever 支持在同一个表的同一种操作类型上建立多个触发器,所以当建了tr_procts_insupd触发器后,在LWQK表执行INSERT操作时将触发tr_procts_insupd触发器,在执行UPDATE操作时将触发tr_proct_update和tr_procts_insupd触发器,他们都是有效的触发器。
⑵ navicat for oracle 创建触发器实现自增
为什么要用触发器实现自增呢?表中加一个id字段,类型设置为 int,然后加上 identity(1,1)就行了!
语句: alter table t_user add id int identity(1,1)
这样,每新增一条数据,id就会自动加1
⑶ 在数据库里怎么使用触发器
触发器是一类特殊的存储过程,开发人员也可以定义、编写符合业务需求的触发器来维护数据的完整性。触发器的控制流程及控制语句与存储过程相同,但触发器与存储过程还是有相当大的差别,触发器的定义格式及开启方式与存储过程不同,作为数据管理员或编程人员,熟练掌握触发器的用法对维护、操作数据库非常重要。基本语法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
⑷ oracle怎么实现id自增和设置主键啊
可以使用序列实现id自增,主键的语法为primary key。
当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。
创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。
具体代码示例如下:
创建表
create table book(
bookId varchar2(4) primary key,
name varchar2(20)
);
创建序列
create sequence book_seq start with 1 increment by 1;
创建触发器
create or replace trigger book_trigger
before insert on book
for each row
begin
select book_seq.nextval into :new.bookId from al;
end ;
添加数据
insert into book(name) values ('cc');
insert into book(name) values ('dd');
commit;
(4)如何创建一个数据库自增触发器扩展阅读:
在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。
触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。
触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete)操作等。
⑸ oracle 自增触发器
1、创建表
create tabletest_user(
user_id number(10,0) primary key,
user_name varchar2(40)
);
2、创建序列
create sequencetest_user_seq start with 1 maxvalue 9999999999 increment by 1;
3、创建触发器
create or replace
triggertest_user_trigger
before insert ontest_user
for each row
begin
selecttest_user_seq.nextval into :new.user_id from al;
end ;
4、插入数据
insert intotest_user(user_name) values('tom');
insert intotest_user(user_name) values('jack');
5、测试结果
select * from test_user;
⑹ sql server2012如何建立触发器
首先你当然要有一个数据库了,这里我使用自己创建的数据库booksDB。
在数据库booksDB上创建触发器,右击触发器->新建触发器,打开之后的界面如下所示
6
数据库的增删改查类似
⑺ 如何在oracle数据库表里创建触发器
一般在sqlplus或者其他第三方oracle工具中,按照语法及需求写好代码,直接执行创建过程即可。
一般语法如下:
CREATE[ORREPLACE]TRIGGERtrigger_name
{BEFORE|AFTER}
{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}
[OR{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}...]
ON[schema.]table_name|[schema.]view_name
[REFERENCING{OLD[AS]old|NEW[AS]new|PARENTasparent}]
[FOREACHROW]
[WHENcondition]
PL/SQL_BLOCK|CALLprocere_name;
⑻ oracle创建自增序列号触发器
create or replace trigger tri_input_no
before insert on mytb
for each row
begin
declare
cursor c is
select 's' from mytb;
rec varchar2(6);
begin
open c;
fetch c into rec;
if c%rowcount = 0 then
select '0001' into :new.mname from al;
else
select (select lpad(substr(max(mname), 2) + 1, 4, '0') from mytb)
into :new.mname
from al;
end if;
end;
end;
刚写出来,测试过的,把表和字段改下就行了
按你的表:
create or replace trigger tri_input_no_test
before insert on TB
for each row
begin
declare
cursor c is
select 's' from TB;
rec varchar2(6);
begin
open c;
fetch c into rec;
if c%rowcount = 0 then
select '0001' into :new.N from al;
else
select (select lpad(substr(max(N), 2) + 1, 4, '0') from TB)
into :new.N
from al;
end if;
end;
end;
⑼ 怎样在Access数据库中创建触发器
触发器是一种特殊类型的存储过程,它在特定的表中使用数据修改操作修改数据时才起作用,这些修改操作有:UPDATE、INSERT、或 DELETE。
触发器可以查询其他表而且可以包含复杂的 SQL 语句。
这对于实施复杂的商业规则或要求尤其有用。
例如,可依据顾客帐户的状态来控制是否允许插入订单。
⑽ 如何创建数据库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