⑴ 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