面試前複習SQL資料庫1

2021-10-06 02:04:18 字數 4323 閱讀 2987

觸發器是乙個特殊的儲存過程,當對指定的表進行某種特定操作(如:insert,delete或update)時,觸發器產生作用。觸發器可以呼叫儲存過程。

觸發器的限制:

乙個表最多只能有三個觸發器,insert,update,delete

每個觸發器只能用於乙個表

不能對檢視、臨時表建立觸發器

truncate table能刪除表,但不能觸發觸發器

不能將觸發器用於系統表

常見的觸發器有三種:分別應用於insert,update,delete事件。

instead of 觸發器

建立乙個instead of 觸發器

if

exists

(select

*from sysobjects where name=

'trig_inser'

)--觸發器名稱

drop

trigger trig_inser

go create

trigger trig_inser on employee instead of

insert

asdeclare

@name nvarchar(50)

,@gender nvarchar(50)

declare

@salary

decimal(10

,2)select

@name

=name,

@gender

=gender,

@salary

=salary from inserted

if@gender

='男'

and@salary

<=

2300.00

--判斷條件

begin

print

'性別男的,工資需要大於2300'

endelse

begin

print

'進行新增'

insert employee(name,gender,salary)

values

(@name

,@gender

,@salary

)end

go

建立成功後可以在表的觸發器資料夾下找到你建立的觸發器。

sql語句執行後觸發 觸發器 進行判斷成立後進行新增操作,不成立提示錯誤資訊

sql語句執insert employee(name,gender,salary)

values

('lily12222111'

,'男'

如果條件成立則提示進行新增 ,建立成功

insert employee(name,gender,salary)

values

('王'

,'男'

after觸發器

if

exists

(select

*from sysobjects where name=

'trig_inser2'

)drop

trigger trig_inser2

go create

trigger trig_inser2 on employee after

insert

--和instead of 觸發器區別

asdeclare

@name nvarchar(50)

,@gender nvarchar(50)

declare

@salary

decimal(10

,2)select

@name

=name,

@gender

=gender,

@salary

=salary from inserted

if@gender

='男'

and@salary

<=

2300.00

begin

print

'性別男的,工資需要大於2300'

rollback

transaction

--回滾

endelse

begin

print

'進行新增'

endgo

after觸發器和instead of 觸發器 的區別在於執行的先後順序,after觸發器執行sql語句是先執行語句,後進行判斷,條件不成立時回滾語句,成立時進行儲存資料

insert employee(name,gender,salary)

values

('lily12222111'

,'男'

無引數儲存過程建立乙個無引數的儲存過程

if

exists

(select

*from sysobjects where name=

'proc_articlecomment'

)drop

procedure proc_articlecomment --儲存過程名稱

go --判斷是否存在如果存在刪除它

create

procedure proc_articlecomment

asselect commentid ,ar.articleid ,l.likeid ,l.createdate,contentdesc ,ar.createdate,c.customername,c.loginname,c.loginpassword,c.***,c.createdate

from articlecomment ar,articlelike l,customer c

where ar.articleid=l.articleid and ar.commentid=c.customerid

呼叫儲存過程

exec proc_articlecomment
方法簡單,成功後省略了連表查詢的繁瑣,簡單建立多次呼叫。

有引數的儲存過程

建立乙個有引數的儲存過程

if

exists

(select

*from sysobjects where name=

'proc_articlecomment2'

)drop

procedure proc_articlecomment2 --儲存過程名稱

go --判斷是否存在如果存在刪除它

create

procedure proc_articlecomment2(

@loginname nvarchar(50)

)asselect commentid ,ar.articleid ,l.likeid ,l.createdate,contentdesc ,ar.createdate,c.customername,c.loginname,c.loginpassword,c.***,c.createdate

from articlecomment ar,articlelike l,customer c

where ar.articleid=l.articleid and ar.commentid=c.customerid and c.loginname=

@loginname

go

呼叫儲存過程,呼叫時需要對你說明的變數進行傳參,多個引數用逗號隔開。

exec proc_articlecomment2  ' kenshincui'

面試複習 資料庫

1 資料庫的四個特性acid 原子性 atomicity 整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾 rollback 到事務開始前的狀態,就像這個事務從來沒有執行過一樣。一致性 correspondence 在事務開始之前和事務...

資料庫複習1

1.常用的資料庫軟體 a.大型資料庫 oracle oracle 甲骨文 公司 db2 ibm公司 sybase sybase公司 較早採用c s技術 b.中小型資料庫 sql server microsoft,支援c s結構,採用標準sql語言 mysql 體積小,速度快,開發原始碼,很多中小型 ...

資料庫面試1

1.mysql 有哪些儲存引擎,各自優缺點 mysql儲存引擎種類 了解 myisam innodb bdb memory merge example ndbcluster archive csv blackhole federated等。在oracle 和sql server等資料庫中只有一種儲存...