約束外鍵引用
A. Sql server 外鍵引用問題
上述關系B稱為外鍵關系表,也就是說B表是C表和A表的關聯表,你要向C 表中插入數據回當然關繫到A表啦。按道答理你在插入C表的同時,應該有一個和B表相關聯的的外鍵,也就是說你給C表插數據的同時,同時給B表插入了一個與C表相關聯的外鍵,根據B表這個外鍵,你又可以得到與A表相關聯的外鍵。只需插入A表相對應的外鍵即可。
B. 什麼是外鍵約束
外鍵約束是指用於在兩個表之間建立關系,需要指定引用主表的哪一列。
外鍵約束對子表如此檢查處理:
在子表上進行INSERT、UPDATE操作的限制是,要和主表中的主鍵值匹配,或為NULL,否則不允許。
外鍵約束對父表如此檢查處理:
在父表_上進行UPDATE、DELETE操作的限制,取決於在定義子表的外鍵時指定的ONUPDATE、ONDELETE子句(不同的DBMS支持的情況不盡相同)。眾ONDELETE子句各選項的作用:
1、NoACTION:刪除主表記錄,如果子表中有和主表匹配的記錄,則不允許(產生一個錯誤提示)。此為默認操作(不指定ONDELETE子句,系統自動採取的操作)。
2、CASCADE(級聯):刪除主表記錄,也將刪除子表中的匹配記錄。
3、SETNULL:刪除主表記錄,將子表中的匹配記錄的外鍵值改為NULL。
4、SETDEFAULT:刪除主表記錄,將子表中的匹配記錄的外鍵值改為默認值。眾ONUPDATE子句各選項的作用。
(2)約束外鍵引用擴展閱讀
外鍵的用途是確保數據的完整性。它通常包括以下幾種:
1、實體完整性,確保每個實體是唯一的(通過主鍵來實施)
2、域完整性,確保屬性值只從一套特定可選的集合里選擇
3、關聯完整性,確保每個外鍵或是NULL(如果允許的話)或含有與相關主鍵值相配的值。
約束的主要目的是控制存儲在外鍵表中的數據,但它還可以控制對主鍵表中數據的修改。例如,如果在 publishers 表中刪除一個出版商,而這個出版商的 ID 在 titles 表中記錄書的信息時使用了。
則這兩個表之間關聯的完整性將被破壞,titles 表中該出版商的書籍因為與 publishers 表中的數據沒有鏈接而變得孤立了。
FOREIGN KEY 約束防止這種情況的發生。如果主鍵表中數據的更改使之與外鍵表中數據的鏈接失效,則這種更改是不能實現的,從而確保了引用完整性。
如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束值相關,則該操作不可實現。
若要成功更改或刪除 FOREIGN KEY 約束的行,可以先在外鍵表中刪除外鍵數據或更改外鍵數據,然後將外鍵鏈接到不同的主鍵數據上去。
C. sql中怎樣創建外鍵約束
添加外鍵 ,alter table B
語法:alter table 表名 add constraint 外鍵約束名 foreign key(列名) references 引用外鍵表(列名)
如:
altertableStu_PkFk_Sc
addconstraintFk_s
foreignkey(sno)
referencesStu_PkFk_S(sno)
--cc是外鍵約束名,不能重復,也不能是int類型(如1,2,3)
add constraint cc
--B表裡的需要約束的欄位(id)
foreign key (id)
--A表後的(id)可省略
references A (id)
(3)約束外鍵引用擴展閱讀:
數據查詢語言,其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
參考資料:結構化查詢語言_網路
D. SQL語句的外鍵約束
create table score
(課程號 int primary key ,
score int)
create table student
(學號 int primary key,
課程號 int,
foreign key (課程號) references score( 課程號))
--------------------------
公共關鍵字是 課程號
score 表中 的主鍵 課程號 是 student表中的非主鍵,所以score表中的課程號是表student的外鍵。
--- 如果公共關鍵字在一個關系中是主鍵,那麼這個公共關鍵字被稱為另一個關系的外鍵
E. 在SQL中如何創建外鍵約束
可以用創建關系圖的方式進行約束,步驟如下
企業管理器中打開資料庫,新建關系圖,選出自己所要的幾張表,然後將對應的外鍵用滑鼠連接到另一張表的主鍵上就行了
ps 環境 sql2000
F. SQL FOREIGN KEY 約束引用
下面是幫助文檔中的內容 { CHECK | NOCHECK} CONSTRAINT 指定啟用或禁用constraint_name。如果禁用,將來插入或更新該列時將不用該約束條件進行驗證。此選項只能與 FOREIGN KEY 和 CHECK 約束一起使用。 ALL指定使用 NOCHECK 選項禁用所有約束,或者使用 CHECK 選項啟用所有約束。 SQLServer臨時禁用和啟用所有外鍵約束 --獲得禁用所有外鍵約束的語句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' from sysobjects a ,sysobjects b where a.xtype ='f' and a.parent_obj = b.id --獲得啟用所有外鍵約束的語句
G. sql約束與外鍵
插入外鍵表外鍵列中的數據必須在主鍵表主鍵列里必須存在,否則會以上錯誤。lz注意下。
H. SQL菜鳥問題!「有外鍵約束引用的表」是什麼意思啊
被外鍵引用的表
I. 外鍵約束是怎麼使用的
create table t1(A1 int primary key)create table t2(B1 int,B2 int)--對t2表的B2創建外鍵(關聯欄位t1表的A1欄位)alter table t2 add constraint FK_B2_t1A1 foreign key(B2) references t1(A1)--注意:能作為一個表的外鍵關聯欄位(t1.A1)這個欄位必須是主鍵或有唯一約束的(t1的A1必須是主鍵或者unique)