資料庫cascade
1. ON DELETE CASCADE是什麼資料庫裡面怎麼設置
是級聯刪除。
為表order_items(Proct_id)添加一個外鍵Order_Items_Proct_ID_FK
級聯proct_Information(proct_id),加上ON DELETE CASCADE後,如果主表order_items刪除內 一條記錄,那麼容proct_Information中對應的關聯 的數據也跟著刪除
資料庫裡面怎麼設置:
http://topic.csdn.net/t/20031209/11/2543679.html
怎樣在DREAMWEVER裡面設置,連接SQL資料庫:
首先,需要配置站點,在站點-〉管理站點里,按向導走。
配置完站點的測試伺服器後在應用程序面板的資料庫里(前三項應該都打上勾了)點加號,然後就按他的提示做就可以了。
你看看吧,是我總結的,網站是找的。
希望對你有幫助。
2. 資料庫的許可權收回restrict和cascade的區別是什麼 cascade好像是可以聯級收回,那restrict呢
restrict禁止收回許可權
3. 資料庫刪除列時,cascade和restrict的問題
級聯更新或者級聯刪除是定義在表裡面的,而不是在執行某個sql操作的時候定義的!
例如:有個a表中的studentID外鍵引用了你現在的student表的uid欄位,那麼在表a上就可以用
alter table a
add constraint FK_OA_REDB foreign key (studentID)
references student(uid)
on update cascade on delete cascade
go
然後你在 student刪除一條記錄的時候 a表中對應uid的記錄就會同時被刪除了
4. sql 語句中的cascade怎麼用
你這是要級聯刪除?
你的用法是不正確的。你先了解一下cascade的用法。
級聯刪除
外鍵的級聯刪除:如果父表中的記錄被刪除,則子表中對應的記錄自動被刪除
父表——被外鍵引用的表
子表——引用父表中的鍵作為外鍵的表
解釋:
父表中刪除包含主鍵值的行的操作,該值由子表的現有行中的外鍵列引用。在級聯刪除中,刪除父表中的記錄時,同時刪除子表中外鍵引用此主健的記錄。
例:
employee 表中有員工的dept_id 引用department表中dept_id( 同時為deptartment主鍵 )作為外鍵,當department表(父表)中一個部門被刪除,employee表(子表)中引用這個部門的dept_id作為dept_id的記錄也自動被刪除。
語法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
例子:
SQL級聯刪除——刪除主表同時刪除從表——同時刪除具有主外鍵關系的表
create table a(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B創建了外碼userId 對應A的主碼ID,聲明了級聯刪除
測試數據:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
刪除A表內id為『11』的數據,發現B表內userId 為「11」也被資料庫自動刪除了,這就是級聯刪除
delete a where id='11'
5. 在oracle資料庫中刪除用戶drop user username cascade; 但是現在報錯啊就高人
好吧!我幫你搜索下得到以下內容
1. drop user出現問題
報出以下錯誤後退出
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist .
關於 recursive SQL 錯誤我們有必要做個簡單說明。
我們知道,當我們發出一條簡單的命令以後
Oracle資料庫要在後台解析這條命令,並轉換為Oracle資料庫的一系列後台操作。
這些後台操作統稱為遞歸sql.
比如create table這樣一條簡單的DDL命令,Oracle資料庫在後台,實際上要把這個命令轉換為對於obj$,tab$,col$等底層表的插入操作。Oracle所作的工作可能比我們有時候想的要復雜的多。
2.跟蹤問題
我們知道Oracle提供sql_trace的功能
可以用於跟蹤Oracle資料庫的後台遞歸操作。
通過跟蹤文件,我們可以找到問題的所在
以下是格式化(tkprof)後的輸出:
The following statement encountered a error ring parse:
DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = 'WAPCOMM'
Error encountered: ORA-00942
Oracle把錯誤信息首先呈現出來,我們看到ORA-00942錯誤是由於
SDO_GEOM_METADATA_TABLE表/視圖不存在所致,問題由此可以定位。
對於這一類的錯誤,定位問題以後解決的方法就要依據具體問題原因而定了。
3.問題定位
對於本案例,通過Metalink獲得以下解釋:
Problem Description
The Oracle Spatial Option has been installed and you are encountering
the following errors while trying to drop a user, who has no spatial tables,
connected as SYSTEM:
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
ORA-06512: at line 7
A 942 error trace shows the failing SQL statement as:
DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = ''
Solution Description
(1)
Create a synonym for SDO_GEOM_METADATA_TABLE under SYSTEM which points to
MDSYS.SDO_GEOM_METADATA_TABLE.
對於本例,為MDSYS.SDO_GEOM_METADATA_TABLE創建一個同義詞即可解決,是相對簡單的情況。
(2)
Now the user can be dropped connected as SYSTEM.
Related Documents
ORA-604 and ORA-942 Reported During DROP USER CASCA
4.實際處理
MDSYS.SDO_GEOM_METADATA_TABLE為Spatial對象,如果未使用Spatial選項,可以刪除
SQL> connect / as sysdbaConnected.
SQL> select * from dba_sdo_geom_metadata order by owner;
select * from dba_sdo_geom_metadata order by owner
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-04063: view "MDSYS.DBA_SDO_GEOM_METADATA" has errors
SQL> select object_name from dba_objects where object_name like '%SDO%';
OBJECT_NAME
ALL_SDO_GEOM_METADATA
ALL_SDO_INDEX_INFO
ALL_SDO_INDEX_METADATA
DBA_SDO_GEOM_METADATA
DBA_SDO_INDEX_INFO
DBA_SDO_INDEX_METADATA
....
DBA_SDO_GEOM_METADATA
DBA_SDO_INDEX_INFO
...
SDO_WITHIN_DISTANCE
USER_SDO_GEOM_METADATA
USER_SDO_INDEX_INFO
USER_SDO_INDEX_METADATA
88 rows selected.
SQL> drop user MDSYS cascade;
User dropped.
SQL> select owner,type_name from dba_types where type_name like 'SDO%';
no rows selected
SQL>
SQL> alter session set sql_trace=true;
Session altered.
SQL> drop user wapcomm;
User dropped.
SQL> alter session set sql_trace=false;
Session altered.
SQL> exit
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Proction
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Proction
這時用戶得以順利drop
5.一點總結
使用sql_trace可以跟蹤資料庫的很多後台操作有利於我們發現問題的所在,很多時候,我們想要研究Oracle的內部活動或後台操作,也可以通過sql_trace跟蹤,sql_trace/10046 是Oracle提供的最為有效的診斷工具之一。
案例四:表更新時發生遞歸SQL2級失敗錯誤
問題描述:表更新的時候失敗了,並且生成了一條ORA-00604 錯誤信息。這個錯誤發生在遞歸SQL 2級。
解決方案:不幸的是,這個錯誤並不能告訴你Oracle資料庫在錯誤發生的時候正要做什麼。當你執行一條SQL語句的時候,Oracle資料庫會為你在幕後做很多事情。例如,考慮下面的SQL語句:
UPDATE emp SET sal = sal*1.05 WHERE empno=1001;
這條SQL語句給號碼為1001的雇員漲5%的工資。當你執行這條語句的時候,Oracle查詢數據目錄來確定是否有這個表或者你是否使用了同義字。一旦它找到了資料庫對象,Oracle查詢數據字典來判斷你是否擁有訪問這個對象的許可權。那麼,Oracle到底是如何與數據字典進行交互的呢?它執行一條自己的SQL 語句。這些Oracle為你執行的SQL語句被稱為「遞歸」SQL語句。你最初的SQL 語句是0級。Oracle為你執行的遞歸SQL語句是1級。有時候,一條遞歸SQL語句又會引起自己的遞歸SQL語句,就是2級。
在你的案例中,有一個2級的遞歸SQL語句正在執行,並且產生了問題。為了解決問題,你需要找出執行的是什麼遞歸SQL語句引起的錯誤。要做到這一點,你必須啟動會話中的追蹤。
首先,執行下面的SQL 語句:
ALTER SESSION SET sql_trace=TRUE;
然後,執行你的更新語句。你會看到ORA-604 錯誤。接下來,執行下面的語句:
ALTER SESSION SET sql_trace=FALSE;
現在到你為資料庫定義的USER_DUMP_DEST 起始參數上的路徑去。那裡應該有一個時間戳為當前時間的文件。那個就是你生成的追蹤文件。你可以打開文件並檢查遞歸SQL語句,其中包括引起錯誤的一條。
來源 http://blog.csdn.net/tianlesoftware/article/details/4787074
6. 資料庫加外鍵一定要寫on delete no action on update cascade嗎
不一定,具體要看你要增加什麼樣的約束,也可以 on delete cascade或on update no action
7. 資料庫sql:「alter table s drop address cascade; 」這句話哪錯了
alter table s add address varchar(30);
是給 s 表 增加一列 address
alter table s drop address
是從 s 表 刪除一列 address
cascade 好像是 不用在 刪除列的地方。
8. 資料庫中restrict和casecade是什麼意思
資料庫中restrict和casecade是什
restrict和cascade都是在外碼定義時指定的關鍵字。
外碼所指定的欄位取值受限制,可以取兩種值:
所參照主碼中出現過的值;
可以取空值。
么意思