sql遞歸刪除
⑴ oracle刪除表的時候時候出現遞歸sql級別2出現錯誤表或視圖不存在,在sysiao中刪除用戶也是是這個錯,求解
這是典型的語法錯誤。
表名不存在。
或,把你的SQL復制出來。
⑵ oracle 表刪除出錯 ORA-00604: 遞歸 SQL 級別 1 出現錯誤 ORA-01426: 數字溢出
解決辦法:
在listener.ora中增加對BlueAeri-PC或ip地址的偵聽,具體步驟如下:
1.啟動Net Manager,在「監聽程序」--Listener下添加一個地址,主機名寫計算機名字或者ip,埠號還是1521,然後保存讓宴。
2.重啟監聽服務。
3.啟動Database configuration Assistant 「配置資料庫選件」就可以重新配置em了,而不用枯賀刪除資料庫。再次創建資料庫坦敗銀時也不會報如上的錯誤。
⑶ 遞歸SQL語句、索引的HEIGHT和BLEVEL以及SELECT FOR UPDATE相關問題
1,所謂的遞歸sql就是在運行當前的sql時調用另外一個sql,如果另外一個sql又調用了另一個sql,那麼遞歸深度就是1(從0開始)。
2,unique scan一般出現在掃描具有unique約束的索引列上:
scott@ORCL>select * from emp where empno=7788;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7788 TEST ANALYST 7566 09-12月-83 10000 20
執行計劃
----------------------------------------------------------
Plan hash value: 1181765974
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 37 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 37 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | EMP_EMPNO_IDX | 1 | | 0 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
因為CBO知道這個索引是唯一的,所以確褲瞎定在掃描時只會返回一個rowid。
而range scan一般是掃描非唯一索引時,原理同上含旦,不再贅述。
3,scott@ORCL>analyze index emp_empno_idx validate structure;
索引已分析
scott@ORCL>select HEIGHT from index_stats;
HEIGHT
----------
1
scott@ORCL>select blevel from user_indexes where index_name='EMP_EMPNO_IDX'談純擾;
BLEVEL
----------
0
另外平衡樹的索引結構如下:
1
/\
/ \
2 3
/ \
4 5
height也就是索引的高度,這里是3。
而blevel指的是從根遍歷到當前塊要走的路徑長度,比如:2,3的blevel為1;4,5的為2,根本身的blevel為0
而在user_indexes中的blevel欄位值正是上面值的最大值,通常等於樹的高度,即height值:
下面是實例說明:
scott@ORCL>create table test as select * from sys.SOURCE$;
表已創建。
scott@ORCL>desc test
名稱
-----------------------------------------------------------------------------------------------------
OBJ#
LINE
SOURCE
scott@ORCL>create index test_idx on test(obj#);
索引已創建。
scott@ORCL>analyze index test_idx validate structure;
索引已分析
scott@ORCL>select blevel from all_indexes where lower(index_name)='test_idx';
BLEVEL
----------
2
4,當然可行,因為這時其它行是沒有被鎖定的。
scott@ORCL>select * from emp where deptno=10 for update;
sys@ORCL>delete from scott.emp where deptno!=10;
已刪除11行。
其實有的問題只要自己動手實踐一下就行了,另外樹高度為三級的索引是非常罕見的,除非你的表是非常的巨大。
⑷ sql觸發器 遞歸 問題
觸發器有兩種不同的遞歸方式,直接遞歸和間接遞歸。
1.直接遞歸
當觸發器被激活並執行一個操作時,該操衡銷作又使用同一個觸發器再次執行操作,被稱為直接遞歸。
例利用觸發器的直接遞歸,當在表中刪除一條記錄時,通過觸發器刪除表中所有編號相同的記錄。
2.間接遞歸
更改表1中的數據時,觸發器被激活並執行一個操作,而該操作又使另一個表2中的某個觸發器被激活。表2中的這個觸發器使表1得到更新,從而再次激活表1中的觸發器,被稱為間接遞歸。
例如,一應用程序更新了氏滾表TA,並引發觸發器Trigger_A。Trigger_A更新表TB,從而使觸發器Trigger_B被引發。Trigger_B轉而更新表TA,從而使Trigger_A再次被引發間接遞歸。
可以利用系統存儲過程sp_dboption關閉直接遞歸,但這又會開啟間接遞歸。若要把這兩種類型的遞歸都禁止,需要使用系統存儲過程sp_configure。
參考資料:明日系列編程詞典--SQL Server 編程咐核游詞典體驗版
⑸ sql2005 根據子ID遞歸查詢所有父ID,如下,問:dbo怎麼才能否去掉
因為你的with後面的名啟者閉稱和悄裂表的名稱一樣了,沖突了嫌隱。
WITH XI_news_Class 改成with 其他名稱
⑹ sql無限遞歸如何刪除
CREATE PROCEDURE up_delete
@delid int
AS
declare @cnt int
select count(1)=@cnt from table where parentid=@delid
if (@cnt >0)
begin
exec up_delete @delid
end
delete from table where id=@delid
go
調用方法 exec up_delete @id,會刪除某個id以及此id的所有子早猛兆類知扒。陸租
⑺ sql如何利用遞歸批量刪除數據
在設計資料庫是 考慮 外鍵的添加,然後 項目中 利用 級聯刪除 實現你想要的效果。。。
⑻ SQL遞歸或級聯刪除操作,無限極,無限量
設置外鍵,在資料庫中啟用級聯刪除和級聯更新選項
⑼ 在oracle資料庫中,想要刪除一個用戶,但是報遞歸SQL級別1出現錯誤,表或視圖不存在,請問有辦法解決嗎
drop user 用戶名 cascade;
刪除用戶的同時會把該用戶模式下的對象也刪除。
⑽ oracle 10g 刪除用戶時提示ORA-00604 :遞歸SQL級別 1
用sys用戶登錄 刪除。