❶ sql怎麼設置外鍵(sql怎麼設置外鍵約束)
sqlserver中建立外鍵約束有3中方式:enterprisemanager中,tables,designtable,設置table的properties,可以建立constraint,referencekey;enterprisemanager中,diagrams,newdiagrams,建立兩個表的關系;直接用transactsql語句。
1、三個方法都需要先建立數據表。
1)運肆孝創建表author:
createtable[dbo].[author](
[id][bigint]notnull,[authorname][char](10)null,[address][char](480)null,[introction][ntext]null
)
2)創建表mybbs:
reatetable[dbo].[mybbs](
[id][bigint]identity(1,1)notnull,[authorid][bigint]notnull,[title][char](40)null,[date_of_created][datetime]null,[abstract][char](480)null,[content][ntext]null
)
2、設置表mybbs中的authorid為外鍵,參照author表的id欄位,直接使用transactsql語句,過程如下:
1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:
begintransaction
altertabledbo.mybbsaddconstraintfk_mybbs_author
foreignkey(authorid)
referencesdbo.author([id])
2)刪除旁稿外鍵約束fk_mybbs_author:
--altertabledbo.mybbsdropconstraintfk_mybbs_author
--rollback
committransaction
上面onupdatecascade,ondeletecascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。
拓展資料:SQL的主鍵和外鍵的作用:
1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。
2、更新時,不能改為主鍵表中沒有的值。
3、刪除主鍵表記錄時,你可以在建外鍵雹春時選定外鍵記錄一起級聯刪除還是拒絕刪除。
4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。
❷ SQL中的外部鍵約束有什麼用
設置資料庫中的外鍵約束是為了保證資料庫的參照完整性。sql
server
2005中的關系表之間的連接,用外鍵表中的外鍵引用主鍵表中的主鍵、一旦創建了關系並將關系成功地加入到了資料庫中,就能夠保證數據的參照完整性、
❸ sql server 中有哪幾種約束
一共有五種約束:這里以學生表stuinfo為例1、添加主鍵約束alter table stuinfo add costraint pk_stuno primary key (stuno)2、唯一約束alter table stuinfo add constraint uq_stuid unique (stuid)3、添加默認約束alter table stuinfo add constraint df_address default ('地址不詳') for address4、添加檢查約束alter table stuinfo add constraint ck_age check (age between 15 and 40) 這是年齡在15到40之間5、添加外鍵約束alter table stumarks add constraint fk_stuno foreign key (stuno) references stuinfo (stuno)這是一個成績表(stumarks)引用學生信息表中的列 學號
❹ sql server 中有哪幾種約束
sql
server中主要有四種約束:
1、實體完整性約束(每一行反應不同的實體)
通過索引,唯一約束。主鍵約束或標識屬性來體現
2、域完整性約束(指給定列的輸入有效性)
通過限制數據類型,檢查約束,輸入格式,外鍵約束,默認值,非空等體現
3、引用完整性約束(表之間的聯系)
通過主外建來建立完整性約束
4、自定義完整性約束(根據用戶的需求)
❺ 什麼是外鍵約束
外鍵約束是指用於在兩個表之間建立關系,需要指定引用主表的哪一列。
外鍵約束對子表如此檢查處理:
在子表上進行INSERT、UPDATE操作的限制是,要和主表中的主鍵值匹配,或為NULL,否則不允許。
外鍵約束對父表如此檢查處理:
在父表_上進行UPDATE、DELETE操作的限制,取決於在定義子表的外鍵時指定的ONUPDATE、ONDELETE子句(不同的DBMS支持的情況不盡相同)。眾ONDELETE子句各選項的作用:
1、NoACTION:刪除主表記錄,如果子表中有和主表匹配的記錄,則不允許(產生一個錯誤提示)。此為默認操作(不指定ONDELETE子句,系統自動採取的操作)。
2、CASCADE(級聯):刪除主表記錄,也將刪除子表中的匹配記錄。
3、SETNULL:刪除主表記錄,將子表中的匹配記錄的外鍵值改為NULL。
4、SETDEFAULT:刪除主表記錄,將子表中的匹配記錄的外鍵值改為默認值。眾ONUPDATE子句各選項的作用。
(5)sql的外鍵約束有什麼擴展閱讀
外鍵的用途是確保數據的完整性。它通常包括以下幾種:
1、實體完整性,確保每個實體是唯一的(通過主鍵來實施)
2、域完整性,確保屬性值只從一套特定可選的集合里選擇
3、關聯完整性,確保每個外鍵或是NULL(如果允許的話)或含有與相關主鍵值相配的值。
約束的主要目的是控制存儲在外鍵表中的數據,但它還可以控制對主鍵表中數據的修改。例如,如果在 publishers 表中刪除一個出版商,而這個出版商的 ID 在 titles 表中記錄書的信息時使用了。
則這兩個表之間關聯的完整性將被破壞,titles 表中該出版商的書籍因為與 publishers 表中的數據沒有鏈接而變得孤立了。
FOREIGN KEY 約束防止這種情況的發生。如果主鍵表中數據的更改使之與外鍵表中數據的鏈接失效,則這種更改是不能實現的,從而確保了引用完整性。
如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束值相關,則該操作不可實現。
若要成功更改或刪除 FOREIGN KEY 約束的行,可以先在外鍵表中刪除外鍵數據或更改外鍵數據,然後將外鍵鏈接到不同的主鍵數據上去。
❻ SQL2005中的外鍵約束主要有什麼作用(求詳細答案)
外鍵是表中的一個列,其值必須在另一個表的主鍵中列出。外鍵主要作用是保證數據引用的完整性,定義外鍵後,不允許刪除在另一個表中具有關聯行的行。
比如,有一個客戶表a,一個訂單表B:客戶ID為表A的主鍵,每個客戶都有唯一的ID號,訂單號為表B的主鍵,每個訂單都有唯一的訂單號。訂單表中的客戶ID列中的值不一定是唯一的,允許一個客戶有多個訂單,但客戶的ID值必須在客戶表A中已存在。定義外鍵後,要刪除客戶表A中的行,必須確保客戶沒有在訂單表B中沒有訂單才能刪除成功。
❼ SQL語句的外鍵約束
ALTER TABLE AA ADD CONSTRAINT FK_A FOREIGN KEY (A) REFERENCES CC (C)
把表CC的C欄位 引用為表AA的A欄位的外鍵,FK_A是外鍵約束名
意思就是把表AA的A欄位值域限制為表CC的C欄位的值域
❽ SQL資料庫外鍵
創建外鍵時可以指定級聯刪除選項,設置後主表數據被刪除,從表數據也會被刪除,反之則不然。
參考:http://hi..com/zagelover/item/c0118adda8f92ef592a97475
sql外鍵約束NO ACTION,CASCADE,SET NULL,SET DEFAULT
NO ACTION
指定如果試圖刪除/修改某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則產生錯誤並回滾 DELETE/UPDATE語句。
CASCADE、SET NULL 和 SET DEFAULT
允許通過刪除或更新鍵值來影響指定具有外鍵關系的表,這些外鍵關系可追溯到在其中進行修改的表。如果為目標表也定義了級聯引用操作,那麼指定的級聯操作也將應用於刪除或更新的那些行。不能為具有 timestamp 列的外鍵或主鍵指定 CASCADE。
ON DELETE CASCADE
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則也將刪除所有包含那些外鍵的行。
ON UPDATE CASCADE
指定如果試圖更新某一行中的鍵值,而該行的鍵值被其他表的現有行中的外鍵所引用,則組成外鍵的所有值也將更新到為該鍵指定的新值。 (如果 timestamp 列是外鍵或被引用鍵的一部分,則不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON UPDATE SET NULL
指定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON DELETE SET DEFAULT
指 定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON DELETE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。
ON UPDATE SET DEFAULT
指 定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON UPDATE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。