當前位置:首頁 » 編程語言 » sql創建觸發器

sql創建觸發器

發布時間: 2022-09-20 08:05:23

sql創建觸發器

創建觸發器用 CREATE TRIGGER CREATE TRIGGER 觸發器名稱 ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 語句 注意:觸發器名稱是不加引號的。 例子: create trigger jcsj_1 on 表名 for insert as begin update 表名 set 授課門數=授課門數+1 where 教師ID=(select 教師 ID from inserted) end 詳見 http://tech.ddvip.com/2007-01/116783077317261.html

② SQL里中存儲過程和觸發器,如何創建

存儲過程可以直接用sql語句創建,觸發器可以在表修改中創建
Create
Procere
name
As

③ 怎麼創建SQL表UPDATE觸發器

觸發器是一種特殊的存儲過程,類似於其它編程語言中的事件函數,SQL
Server??
允許為
INSERT、UPDATE、DELETE
創建觸發器,當在表(視圖)中插入、更新、刪除記錄時,觸發一個或一系列
T-SQL
語句。
1:創建觸發器:
??觸發器可以在企業管理器里創建,也可以在表名上點右鍵->「所有任務」->「管理觸發器」來創建。
??用
CREATE
TRIGGER創建觸發器CREATE
TRIGGER
觸發器名稱
ON
表名
FOR
INSERT、UPDATE

DELETE
AS
T-SQL
語句例:
USE
Northwind
CREATE
TRIGGER
Category_Delete
ON
Categories
FOR
DELETE
AS
UPDATE
P
SET
Discontinued
=
1
FROM
Procts
AS
P
INNER
JOIN
deleted
AS
d
ON
P.CategoryID
=
d.CategoryID

④ SQl中怎麼樣創建觸發器

創建觸發器:
Create
Trigger
名稱

On
表名

For
類型

As

Sql語句

希望對你有幫助!

c語言怎麼使用sql觸發器

c語言怎麼使用sql觸發器:
定義: 何為觸發器?在SQL Server裡面也就是對某一個表的一定的操作,觸發某種條件,從而執行的一段程序。觸發器是一個特殊的存儲過程。
常見的觸發器有三種:分別應用於Insert , Update , Delete 事件。

我為什麼要使用觸發器?比如,這么兩個表:

Create Table Student( --學生表
StudentID int primary key, --學號
....
)

Create Table BorrowRecord( --學生借書記錄表
BorrowRecord int identity(1,1), --流水號
StudentID int , --學號
BorrowDate datetime, --借出時間
ReturnDAte Datetime, --歸還時間
...
)

用到的功能有:
1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);
2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄。
等等。

這時候可以用到觸發器。對於1,創建一個Update觸發器:

Create Trigger truStudent
On Student --在Student表中創建觸發器
for Update --為什麼事件觸發
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

理解觸發器裡面的兩個臨時的表:Deleted , Inserted 。注意Deleted 與Inserted分別表示觸發事件的表「舊的一條記錄」和「新的一條記錄」。
一個資料庫系統中有兩個虛擬表用於存儲在表中記錄改動的信息,分別是:
虛擬表Inserted 虛擬表Deleted

在表記錄新增時 存放新增的記錄 不存儲記錄
修改時 存放用來更新的新記錄 存放更新前的記錄
刪除時 不存儲記錄 存放被刪除的記錄

一個Update 的過程可以看作為:生成新的記錄到Inserted表,復制舊的記錄到Deleted表,然後刪除Student記錄並寫入新紀錄。

對於2,創建一個Delete觸發器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID

從這兩個例子我們可以看到了觸發器的關鍵:A.2個臨時的表;B.觸發機制。

⑥ sql server2012如何建立觸發器

  • 首先你當然要有一個資料庫了,這里我使用自己創建的資料庫booksDB。

    在資料庫booksDB上創建觸發器,右擊觸發器->新建觸發器,打開之後的界面如下所示

  • 6

    資料庫的增刪改查類似

⑦ 怎樣創建一個sql的觸發器

視圖是虛擬表,不能建觸發器,只能在基本表上建

⑧ SQL觸發器怎麼做

二樓的說的對,insert
into...select
語句是復製表a的數據到表b里,而且表2不能自定義,是由語句創建的,如果表b已經存在則會出錯.
如果樓主要執行insert
into...select,首先要判斷插入的表是否已經存在,如果存在要將其刪除後在執行.
樓主如果你只是想把剛插入的數據的那3列在插入到另一個表裡,完全沒必要那樣做,直接從inserted表(這個表只在insert觸發器適用)里讀就能讀的到剛插入的內容了,讀取出來後在用insert
語句插入到另一個表即可.

⑨ SQL里中存儲過程和觸發器,如何創建

  1. 觸發器是一種特殊的存儲過程,
    2.觸發器是在對表進行插入、更新或刪除操作時自動執行的存儲過程
    3.觸發器通常用於強制業務規則
    4.觸發器是一種高級約束,可以定義比用CHECK 約束更為復雜的約束
    5.可執行復雜的SQL語句(if/while/case)

  2. DELETE 觸發器
    INSERT 觸發器
    UPDATE 觸發器

  3. /*----------Insert 插入 觸發器------------*/
    Create Trigger Tri_insert
    on students /*針對某個表,觸發器是建立在表關繫上的*/
    for insert /*採用的是哪種觸發器*/
    as
    declare @stu_id int;
    declare @stu_score varchar(200);
    select @stu_id=s_id from inserted /*這里的Inserted 是在創建觸發器時候 系統自動創建的內存表*/
    insert into student_Score(s_id,ss_score)values(@stu_id,'100')

  4. go
    --就是插一條數據進入students中,Tri_insert觸發器就會自動在student_Score插入相關的學生的一條分數的數據
    insert into students(s_name,s_classId) values('黃馳',6)

  5. select * from student_Score

⑩ 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表中。

熱點內容
實簡ftp軟體怎麼改伺服器文件 發布:2025-01-11 10:09:39 瀏覽:555
qb充值源碼 發布:2025-01-11 10:00:21 瀏覽:27
c語言元編程 發布:2025-01-11 09:53:02 瀏覽:343
線切割割圓怎麼編程 發布:2025-01-11 09:52:23 瀏覽:171
怎麼選女孩子的配置 發布:2025-01-11 09:47:33 瀏覽:671
python獲取header 發布:2025-01-11 09:47:32 瀏覽:492
iis7上傳大小 發布:2025-01-11 09:41:38 瀏覽:507
拍攝腳本是什麼工作 發布:2025-01-11 09:39:12 瀏覽:786
魅族安卓8什麼時候更新 發布:2025-01-11 09:27:58 瀏覽:362
電腦板我的世界登錄密碼多少 發布:2025-01-11 09:15:43 瀏覽:284