❶ sql中創建觸發器
大概思路如下(一些細節邏輯自己補充吧):
CREATE TRIGGER dnum_change
ON 學院信息表
FOR UPDATE
AS
declare @dnum varchar(100)
IF UPDATE (dnum)
begin
select @dnum = dnum from inserted
update 學生信息表 set dnum=@dnum where 查詢條件
end
GO
❷ sql的觸發器怎麼做
這個不能用觸發器,要用作業。
打開企業管理器,進入你伺服器名下的「管理」,啟動SQL Server代理。然後查看伺服器屬性,選中「自動啟動SQL Server代理」。
接下來進入SQL Server代理下的「作業」,在右邊點右鍵選「新建作業」。
在「常規」里,隨便輸入一個作業名,分類要選最後一項「資料庫維護」。
在「步驟」里,點「新建步驟」,隨便輸入一個步驟名,資料庫選成你的資料庫,命令里輸入你刪除記錄的語句,也可以通過「打開」來裝載T-SQL腳本,弄好後記得分析一下,沒有問題再繼續。在「高級」里將「失敗時的操作」改成「轉到下一步」。
在「調度」里,點「新建調度」,隨便輸入一個調度名,點「更改」,「發生頻率」選每天,「一次發生於」里設置17:00:00,然後點「確定」,再點「確定」,再點「確定」,配置就完成了。
❸ 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觸發器編程
1、
在「Borrow」表中創建一個觸發器ins_borrower_tr,當向「借閱」表中插入記錄時,「借書日期」不能為空值,「還書日期」必須為空值。不滿足上述條件則不允許向「借閱」表中插入記錄,滿足上述條件則允許插入,同時得到該書的應還日期,且「圖書」表中對應的圖書數量要減1,此操作對應讀者的借書行為。
----「借書日期」不能為空值
可以通過
IS
NOT
NULL
來設置,不需要觸發器;
----「還書日期」必須為空值
可以通過設置默認值實現,就是不管輸入何值,最後都清空;
----「應還日期」是通過「借書日期」計算得出、「圖書」表中對應的圖書數量要減1
:兩個功能通過觸發器實現;
CREATE
TRIGGER
ins_borrower_tr
ON
Borrow
FOR
INSERT
AS
BEGIN
UPDATE
Borrow
SET
應還日期
=
借書日期
+ n
FROM
Borrow,Inserted
WHERE
Borrow.b_id,
=
Inserted.b_id
【其他的類似】
END
GO
2、在「Borrow」表中創建一個觸發器del_borrower_tr,當刪除「借閱」表中的某個記錄時,若「還書日期」為空值,則不允許刪除該記錄。
----
這個可以通過觸發器實現
3、在「Borrow」表中創建一個觸發器update_return_tr,當更新「借閱」表中的某個記錄時,只能更新「還書日期」欄位,其他欄位不能更新,請計算出是否過期並給出罰款信息(過期一天罰款0.1元)。如果更新,「book」表中對應的圖書數量要加1。此操作對應讀者的還書行為。
----只能更新「還書日期」欄位,其他欄位不能更新:這個不好實現的,因為如果程序中是可寫的,就有點麻煩了!建議在程序中設置其他欄位修改時為只讀屬性。
----其他科通過觸發器實現。
❺ SQL中,如何創建一個有條件的觸發器
以 delete 觸發為例:
createtriggertri_delete
ona--將要進行更改的表名
fordelete--給表刪除一條數據的時候觸發
as
declare@aavarchar(10)
select@aa=afromdeleted
if@aa='a'--處理的條件
begin
raiserror('錯誤',16,8)
rollbacktran
end
觸發器效果:刪除表a數據,如果a列為『a』,即阻止刪除,提示『錯誤』
❻ SQl中怎麼樣創建觸發器
創建觸發器:
Create
Trigger
名稱
On
表名
For
類型
As
Sql語句
希望對你有幫助!
❼ 急!!!Sql創建觸發器
創建2個觸發器:
create TRIGGER [Trg_update] ON [dbo].[數據表a]
FOR UPDATE
AS
declare @oldname nvarchar(50)
declare @newname nvarchar(50)
declare @tlen int
select @newname=name from inserted
select @oldname=name from deleted
update 數據表b set name=@newname where name=@oldname
create TRIGGER [Trg_delete] ON [dbo].[數據表a]
FOR DELETE
AS
declare @oldname nvarchar(50)
select @oldname=name from deleted
DELETE 數據表b where name=@oldname
❽ SQL觸發器怎麼做
CREATE
TRIGGER
[km]
ON
員工表
AFTER
DELETE
AS
BEGIN
DELETE
FROM
工資表
WHERE
員工編號
IN
(SELECT
員工編號
FROM
deleted)
END
CREATE
TRIGGER
[gf]
ON
員工表
AFTER
UPDATE
AS
BEGIN
UPDATE
工資表
SET
部門編號=(SELECT
部門編號
FROM
inserted)
WHERE
員工編號=(SELECT
員工編號
FROM
inserted)
END
❾ SQL觸發器怎麼做
二樓的說的對,insert
into...select
語句是復製表a的數據到表b里,而且表2不能自定義,是由語句創建的,如果表b已經存在則會出錯.
如果樓主要執行insert
into...select,首先要判斷插入的表是否已經存在,如果存在要將其刪除後在執行.
樓主如果你只是想把剛插入的數據的那3列在插入到另一個表裡,完全沒必要那樣做,直接從inserted表(這個表只在insert觸發器適用)里讀就能讀的到剛插入的內容了,讀取出來後在用insert
語句插入到另一個表即可.
❿ SQL中設定一個觸發器
可以創建如下類似觸發器
create trigger depart_update on depart for update
as
begin
if update(deptno)
begin
update worker set deptno = b.deptno from inserted b where worker.col1 = b.col1
end
end