資料庫儲存過程和觸發器

2021-07-25 04:53:36 字數 2532 閱讀 2193

--建立儲存過程

create

procedure titles_sum @title varchar(40),@sum money output

asselect @sum = sum(price)

from titles

where title like @title

godeclare @totalcost money

execute titles_sum 'the%', @totalcost output

select @totalcost

gocreate

procedure oakland_authors

asselect au_fname, au_lname, address, city, zip

from authors

where city = 'oakland'

and state = 'ca'

order

by au_lname, au_fname

go--sp_helptext oakland_authors

alter

procedure oakland_authors

asselect au_fname, au_lname, address, city, zip

from authors

where state = 'ca'

order

by au_lname, au_fname

go--sp_helptext oakland_authors

--提交事務後,所有書籍支付的版稅增加 10%。

begin

transaction mytransaction

update roysched

set royalty = royalty * 1.10

commit

transaction mytransaction

--rollback

transaction mytransaction

select royalty from roysched

--select @@trancount

--1.建立試驗實驗表

create

table temptrigger

( id_temp varchar(2) not

null

primary

key,

temp_name varchar(10) null,

temp_age int

null)go

insert temptrigger values('01','張三','10')

insert temptrigger values('02','李四','11')

insert temptrigger values('03','王五','12')

insert temptrigger values('04','趙六','11')

select * from temptrigger go

--2.建立insert , update觸發器

create

trigger temptrigger_modify

on temptrigger

forinsert,update

asbegin

if (select temp_age from inserted) > 15

begin

rollback

transaction

print '年齡不能超過15歲!'

endend

--insert temptrigger values('04','大朋','17')

--insert temptrigger values('05','大朋','17')

--insert temptrigger values('05','大朋','14')

--update temptrigger set temp_age='18'

where id_temp = '01'

--update temptrigger set temp_age='9'

where id_temp = '01'

-3.建立delete 觸發器:

drop

trigger temptrigger_delete

create

trigger temptrigger_delete

on temptrigger

fordelete

asbegin

print @@rowcount

if @@rowcount > 1

begin

rollback

transaction

print '一次刪除記錄不能多於1條'

endend

--delete

from temptrigger

--delete

from temptrigger where id_temp='01'

資料庫觸發器和儲存過程

觸發器 trigger 是由事件來觸發某個操作。這些事件包括insert語句 update語句和delete語句。當資料庫系統執行這些事件時,會啟用促發其執行相應的操作。create trigger 觸發器名 before after 觸發事件 on 表名 for each row 執行語句 每插入...

資料庫觸發器 和 儲存過程

觸發器是指在執行指定表修改操作時強制執行的儲存過程 可以理解為一種特殊的儲存過程 通常用於強制執行不同表之間相互關聯的資料的的完整性或者一致性 因為是在建立表的時候就建立了,所以是不可繞過的,可以用於一些複雜操作場景,用來完成資料完整性。1 ddl 資料定義觸發器 在發生 資料定義語言,如增加表 修...

資料庫儲存過程與觸發器

資料庫儲存過程 儲存過程 stored procedure 是在大型 資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。優點 重複使用。儲存過程可以重複使用,從而可以減...