當前位置:首頁 » 編程語言 » sql查看觸發器的創建信息
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查看觸發器的創建信息

發布時間: 2023-05-19 08:53:41

A. sql中觸發器創建與調用

先給你舉個觸發器的實例:
先創建兩個表
Create Table Student( --學生表
StudentID int primary key, --學號
....
)

Create Table BorrowRecord( --學生借書記錄表
BorrowRecord int identity(1,1), --流水號
StudentID int , --學號
BorrowDate datetime, --借出時間
ReturnDAte Datetime, --歸還時間
...
)
創建觸發器
Create Trigger truStudent
On Student --在Student表中創建觸發器
for Update --為什麼事件觸發,在這里就是修改的時候會執行這個觸發器,一旦你修改Student表,就會執行
As --事件觸發後所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted臨時表
Where br.StudentID=d.StudentID
end

B. sql觸發器的創建

# 創建insert類型觸發器
--創建insert插入類型觸發器
if (object_id('tgr_classes_insert', 'tr') is not null)
drop trigger tgr_classes_insert
go
create trigger tgr_classes_insert
on classes
for insert --插入觸發
as
--定義變數
declare @id int, @name varchar(20), @temp int;
--在inserted表中查詢已經插入記錄信息
select @id = id, @name = name from inserted;
set @name = @name + convert(varchar, @id);
set @temp = @id / 2;
insert into student values(@name, 18 + @id, @temp, @id);
print '添加學生成功!';
go
--插入數據
insert into classes values('5班', getDate());
--查詢數據
select * from classes;
select * from student order by id;
insert觸發器,會在inserted表中添加一條剛插入的記錄。

# 創建delete類型觸發器
--delete刪除類型觸發器
if (object_id('tgr_classes_delete', 'TR') is not null)
drop trigger tgr_classes_delete
go
create trigger tgr_classes_delete
on classes
for delete --刪除觸發
as
print '備份數據中……';
if (object_id('classesBackup', 'U') is not null)
--存在classesBackup,直接插入數據
insert into classesBackup select name, createDate from deleted;
else
--不存在classesBackup創建再插入
select * into classesBackup from deleted;
print '備份數據成功!';
go
--
--不顯示影響行數
--set nocount on;
delete classes where name = '5班';
--查詢數據
select * from classes;
select * from classesBackup;
delete觸發器會在刪除數據的時候,將剛才刪除的數據保存在deleted表中。

# 創建update類型觸發器
--update更新類型觸發器
if (object_id('tgr_classes_update', 'TR') is not null)
drop trigger tgr_classes_update
go
create trigger tgr_classes_update
on classes
for update
as
declare @oldName varchar(20), @newName varchar(20);
--更新前的數據
select @oldName = name from deleted;
if (exists (select * from student where name like '%'+ @oldName + '%'))
begin
--更新後的數據
select @newName = name from inserted;
update student set name = replace(name, @oldName, @newName) where name like '%'+ @oldName + '%';
print '級聯修改數據成功!';
end
else
print '無需修改student表!';
go
--查詢數據
select * from student order by id;
select * from classes;
update classes set name = '五班' where name = '5班';
update觸發器會在更新數據後,將更新前的數據保存在deleted表中,更新後的數據保存在inserted表中。

C. sql如何查看錶觸發器信息:就是我想要看這個表有幾個觸發器 還有觸發器的名字 用 語句實現!!

呵呵,看到你的這個問題了,回答一下,希望能給你增加印象。
由於sqlserver
沒有oracle中的行級觸發器的概念,觸發器如下:
create
trigger
[tc2]
on
[dbo].[teacher]
for
insert,update
as
if
(select
salary
from
inserted)<3000
update
teacher
set
salary=3000
and
tid=
(select
tid
from
inserted)
說明:當你插入數據的時候,這條數據是存放在【inserted】表中的,在這個表中把【teacher】表的主鍵得到(假如是【tid】)然後把這個主鍵信息加到where
條件上,這樣就能起到只更新插入的那一條數據的效果了,否則會出現更新了全表的問題。
---
以上,希望對你有所幫助。

D. 在mysql中如何查看和修改觸發器的代碼請問各位大師,小弟先謝謝了!!!!!!!!!

mysql中,觸發器只能查看,無法修改,如果要修改,只能刪除原有的觸發器,重新創建觸發器,以達到修改的目的。

工具:Navicat Premiu

步驟:

1、正確安裝Navicat Premiu,並確保連接到指定的資料庫

2、以連接本地資料庫localhost中的badkano資料庫為例。

DROPTRIGGERt_afterdelete_on_tab1;

6、然後重新創建即可。

E. SQL中如何查看觸發器的原代碼

sql
server
只要在創建觸發器的時候沒有指定with
encryption
選項,都能查看到源代碼。
在smss的對象資源管理器中找到有觸發器的表,展開,在下面的觸發器項目下找到觸發器的名字,雙擊(或者右擊觸發器名字,在菜單中選擇編輯),
就能看到觸發器的源代碼了。