sqlplus查觸發器是否編譯
Ⅰ sqlplus語句中創建一個觸發器一直提示第三行錯誤,缺失右括弧是為什麼,觸發器代碼如下所示
辦法一:把序列和觸發器名字中的引號去掉.
辦法二:觸發器中,select "Sequence_APP".NEXTVAL INTO :new.AID from al;
Ⅱ 如何查看sql server是否有觸發器
1、通過可視化操作來管理和查看觸發器
在Microsoft SQL Server Management Studio中,選中某一資料庫的某一張表時,在「對象資源管理器詳細」窗口中有「觸發器」項。
通過「觸發器」的右鍵菜單功能,我們可以新建觸發器。如果原來的表中已經存在了觸發器,通過雙擊「觸發器」項可以查看到具體的觸發器,在此處可以執行 修改、刪除等操作。
2、通過查詢分析器來管理和查看觸發器
1)查看錶中的觸發器類型:
sp_helptrigger:返回對當前資料庫的指定表定義的 DML 觸發器的類型。sp_helptrigger 不能用於 DDL 觸發器。
示例: EXEC sp_helptrigger '表名'
2)查看觸發器的有關信息:
sp_help:報告有關資料庫對象(sys.sysobjects 兼容視圖中列出的所有對象)、用戶定義數據類型或某種數據類型的信息。
示例: EXEC sp_help '觸發器名'
3)顯示觸發器的定義:
sp_helptext:顯示規則、默認值、未加密的存儲過程、用戶定義函數、觸發器或視圖的文本。
示例: EXEC sp_helptext '觸發器名'
4)查看當前庫中所有的觸發器:
查詢腳本:SELECT * FROM Sysobjects WHERE xtype = 'TR'
5)查看當前庫中所有的觸發器和與之相對應的表:
查詢腳本:SELECT tb2.name AS tableName,tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj=tb2.id WHERE tb1.type='TR'
Ⅲ 創建的觸發器帶有編譯錯誤
select table_sequence nextval into:new.id from al;
這句的table_sequence 和nextval 之間少了個點
table_sequence.nextval
還有這個樣子些不好,這個al偽表一般只適合SQLPLUS下用,pl/sql中 直接用賦值的方式:
:new.id:=table_sequence.nextval就OK了。
Ⅳ SQLPLUS一道關於觸發器的問題,判斷輸入students表格裡面的生日與年齡是否符合,如果不符合會報錯。
這個可以滿足你的要求,oracle10gr2已測試
create or replace trigger stu_age
before insert or update on STUDENTS
for each row
begin
if (EXTRACT(year FROM sysdate) - EXTRACT(year FROM :new.bdate) <>
:new.age) then
RAISE_APPLICATION_ERROR(num => -20107,
msg => 'MISMATCH OF BDATE AND AGE');
end if;
end;
Ⅳ Oracle SQL*PLUS中設置trigger為何總是編譯錯誤
編譯錯誤一般是trigger的寫法有誤。
Oracle中trigger語法:
CREATE[ORREPLACE]TRIGGERtrigger_name
{BEFORE|AFTER}
{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}
[OR{INSERT|DELETE|UPDATE[OFcolumn[,column…]]}...]
ON[schema.]table_name|[schema.]view_name
[REFERENCING{OLD[AS]old|NEW[AS]new|PARENTasparent}]
[FOREACHROW]
[WHENcondition]
PL/SQL_BLOCK|CALLprocere_name;
具體的內容需要根據需求來編寫。
Ⅵ LINUX下,對ORACLE資料庫腳本(比如存儲過程或是觸發器)進程編譯,用哪個命令
sqlplus里
@${filename}
showerror -- 查看編譯錯誤
Ⅶ 如何在sql資料庫中查找觸發器的代碼
SQL Server
只要在創建觸發器的時候沒有指定WITH ENCRYPTION 選項,都能查看到源代碼。
在SMSS的對象資源管理器中找到有觸發器的表,展開,在下面的觸發器項目下找到觸發器的名字,雙擊(或者右擊觸發器名字,在菜單中選擇編輯), 就能看到觸發器的源代碼了。
Ⅷ SQL中如何查詢指定觸發器是否存在
我給你講一下吧,前提是我不知道你是sql server還是oracle:
那就先講sql server:select name from sysobjects where name='trig_insert' and type='tr'這句一般在建觸發器是第一句都寫得,name欄位是你的觸發器名稱,當然你一可以用模糊查詢like關鍵字來查。
其次是oracle ,他的觸發器在user_triggers這張表裡面,select trigger_name,trigger_type,table_name from user_triggers where trigger_name like' to%';
Ⅸ oracle創建的觸發器帶有編譯錯誤
告訴你兩點:
1、當出現警告或者錯誤的時候,使用show error 命令,可以查看錯誤的具體信息,在信息中可以定位錯誤的具體位置。
2、你的問題是:【endif;】不能寫在一起,【end if;】是正確的。
類似的還有【end loop】 等。
---
以上,希望對你有所幫助。
Ⅹ 如何在sqlplus中運行創建觸發器的腳本
腳本編輯好以後放到一個目錄下,腳本名比如create.sql,最好是英文目錄,比如c盤的data目錄。
其中創建的腳本必須不能有錯誤,否則編譯肯定無法通過,然後要以分號結尾。
然後cmd進入data目錄,登錄sqlplus到指定資料庫。
執行
@create.sql