【正文】
修改 XSCJ數(shù)據(jù)庫中在 XS表上定義的觸發(fā)器 reminder。 USE XSCJ ALTER TRIGGER reminder ON XS FOR UPDATE AS RAISERROR (“ 執(zhí)行的操作是修改” , 16, 10) GO 2. 通過企業(yè)管理器修改觸發(fā)器 進(jìn)入企業(yè)管理器,修改觸發(fā)器的步驟與創(chuàng)建的步驟相同,進(jìn)入界面后在“名稱”對(duì)應(yīng)的下拉表中選擇要修改的觸發(fā)器名即可進(jìn)入觸發(fā)器修改狀態(tài)。 說明: trigger_name:指要更改的現(xiàn)有觸發(fā)器。 如果原來的觸發(fā)器定義是用 WITH ENCRYPTION 或 RECOMPILE 創(chuàng)建的,那么只有在 ALTER TRIGGER中也包含這些選項(xiàng)時(shí),這些選項(xiàng)才有效。 其他參數(shù)含義參考創(chuàng)建觸發(fā)器命令部分。 36 觸發(fā)器的刪除 1. 利用 SQL命令刪除觸發(fā)器 語法格式: DROP TRIGGER { trigger } [ ,...n ] 說明: trigger:指要?jiǎng)h除的觸發(fā)器名稱,包含觸發(fā)器所有者名。 n:表示可以指定多個(gè)觸發(fā)器。 [例 ] 刪除觸發(fā)器 reminder。 USE XSCJ IF EXISTS (SELECT name FROM sysobjects WHERE name = 39。reminder39。 AND type = 39。TR39。) DROP TRIGGER reminder GO 2.通過企業(yè)管理器刪除觸發(fā)器 進(jìn)入界面后在“名稱”對(duì)應(yīng)的下拉表中選擇要?jiǎng)h除的觸發(fā)器名,然后選擇“刪除”按鈕。 37 sp_help、 sp_helptext和 sp_depends具體用途和語法形式 ? sp_help:用于查看觸發(fā)器的一般信息 , 如觸發(fā)器的名稱 、屬性 、 類型和創(chuàng)建時(shí)間 。 ?sp_help ‘觸發(fā)器名稱 ’ ? sp_helptext:用于查看觸發(fā)器的正文信息 ?sp_helptext ‘觸發(fā)器名稱 ’ ? sp_depends:用于查看指定觸發(fā)器所引用的表或者指定的表涉及到的所有觸發(fā)器 。 ?sp_depends ’觸發(fā)器名稱 ’ ?sp_depends ‘表名 ’ 38 附例:用戶登錄驗(yàn)證 CREATE PROC upUserLogin @strLoginName NVARCHAR(20), @strLoginPwd NVARCHAR(20), @blnReturn BIT OUTPUT AS 定義一個(gè)臨時(shí)用來保存密碼的變量 DECLARE @strPwd NVARCHAR(20) BEGIN 從表中查詢當(dāng)前用戶的密碼,賦值給 @strPwd 變量,下面要對(duì)它進(jìn)行比較 SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLoginName IF @strLoginPwd = @strPwd BEGIN SET @blnReturn = 1 更新用戶最后登錄時(shí)間 UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=@strLoginName END ELSE SET @blnReturn = 0 END 39 附例:在 sql server教學(xué)數(shù)據(jù)庫 pub中查詢 state為 ut的作者所出版的著作 CREATE PROCEDURE pub_test AS BEGIN SET NOCOUNT ON DECLARE @au_id varchar(11), @au_fname varchar(20), @au_lname varchar(40), @message varchar(80), @title varchar(80) PRINT 39。 Utah Authors report 39。 DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname, au_lname FROM authors WHERE state = 39。UT39。 ORDER BY au_id OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname, @au_lname WHILE @@FETCH_STATUS = 0 BEGIN PRINT 39。 39。 SELECT @message = 39。 Books by Author: 39。 + @au_fname + 39。 39。 + @au_lname PRINT @message 40 DECLARE titles_cursor CURSOR FOR SELECT FROM titleauthor ta, titles t WHERE = AND = @au_id Variable value from the outer cursor OPEN titles_cursor FETCH NEXT FROM titles_cursor INTO @title IF @@FETCH_STATUS 0 PRINT 39。 No Books39。 WHILE @@FETCH_STATUS = 0 BEGIN SELECT @message = 39。 39。 + @title PRINT @message FETCH NEXT FROM titles_cursor INTO @title END CLOSE titles_cursor DEALLOCATE titles_cursor Get the next author. FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname, @au_lname END CLOSE authors_cursor DEALLOCATE authors_cursor END