成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server 外鍵的更新的實(shí)際操作規(guī)則

數(shù)據(jù)庫 SQL Server
本文主要描述的是SQL Server 外鍵的更新(刪除)的實(shí)際操作規(guī)則,以下就是文章的具體內(nèi)容的描述,望你會(huì)有所收獲。

此文主要向大家講述的是SQL Server 外鍵的更新(刪除)的實(shí)際操作規(guī)則,以前用數(shù)據(jù)庫德 時(shí)候一般都建表關(guān)系,但是把這些關(guān)系建好了之后往往都用不上,這次寫一個(gè)項(xiàng)目,涉及到多表的SQL Server 外鍵約束和級(jí)聯(lián)刪除的問題,才研究了一下.

用的vs2005里面自帶的SqlExpress,在VS里面作數(shù)據(jù)庫,感覺不是很方便(廢話,都方便了,那sqlserver2005 dev 賣給誰去!)

我建了表,然后建了關(guān)系,設(shè)定了外鍵約束.

然后就以為萬事大吉了,去寫代碼,畫界面去了.

把代碼和界面搞定后,一試驗(yàn)刪除,刪除的級(jí)聯(lián)鏈中間的一個(gè)表的數(shù)據(jù),然后就報(bào)錯(cuò).

Title

DELETE 語句與 REFERENCE 約束"FK_課程擴(kuò)展信息表_教師表"沖突。該沖突發(fā)生于數(shù)據(jù)庫"x:\xxx.MDF",表"dbo.課程擴(kuò)展信息表", column '教師編號(hào)'。

 

語句已終止。

 

 

然后研究了下SQL Server 外鍵約束.到底是怎么回事.網(wǎng)上搜到一篇定義:

 

 

Title

 

FOREIGN KEY 約束

 

如果在 FOREIGN KEY 約束的列中輸入非 NULL 值,則此值必須在被引用的列中存在,否則將返回違反外鍵約束的錯(cuò)誤信息。

 

FOREIGN KEY 約束應(yīng)用于前面所講的列,除非指定了源列。

 

FOREIGN KEY 約束僅能引用位于同一服務(wù)器上的同一數(shù)據(jù)庫中的表。數(shù)據(jù)庫間的引用完整性必須通過觸發(fā)器實(shí)現(xiàn)。有關(guān)更多信息,請(qǐng)參見 CREATE TRIGGER。

 

FOREIGN KEY 可以引用同一表中的其它列(自引用)。

 

列級(jí) FOREIGN KEY 約束的 REFERENCES 子句僅能列出一個(gè)引用列,且該列必須與定義約束的列具有相同的數(shù)據(jù)類型。

 

表級(jí) FOREIGN KEY 約束的 REFERENCES 子句中引用列的數(shù)目必須與約束列列表中的列數(shù)相同。每個(gè)引用列的數(shù)據(jù)類型也必須與列表中相應(yīng)列的數(shù)據(jù)類型相同。

 

如果 timestamp 類型的列是SQL Server 外鍵或被引用鍵的一部分,則不能指定 CASCADE。

 

可以在相互間具有引用關(guān)系的表上組合使用 CASCADE 和 NO ACTION。如果 SQL Server 遇到 NO ACTION,將終止執(zhí)行語句并回滾相關(guān)的 CASCADE 操作。當(dāng) DELETE 語句導(dǎo)致 CASCADE 和 NO ACTION 組合操作時(shí),在 SQL Server 檢查 NO ACTION 操作之前將執(zhí)行所有 CASCADE 操作。

 

一個(gè)表最多可包含 253 個(gè) FOREIGN KEY 約束。

 

對(duì)于臨時(shí)表不強(qiáng)制 FOREIGN KEY 約束。

 

每個(gè)表在其 FOREIGN KEY 約束中最多可以引用 253 個(gè)不同的表。

 

FOREIGN KEY 約束只能引用被引用表的 PRIMARY KEY 或 UNIQUE 約束中的列或被引用表上 UNIQUE INDEX 中的列。

 

仍然不解其意.

然后在關(guān)系圖中的關(guān)系上點(diǎn)擊右鍵,查看屬性,發(fā)現(xiàn)其"INSERT 和 UPDATE 規(guī)范類別 "內(nèi)都是"無操作",感覺應(yīng)該是這里的問題.

上msdn上搜索了一下,發(fā)現(xiàn)了這篇文章: 可視化數(shù)據(jù)庫工具-外鍵列屬性

 

ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vdt01/html/2cb23e81-6342-4390-9d0e-b7a4805eca0f.htm

 

關(guān)鍵的幾句在這里:

 

Title

INSERT 和 UPDATE 規(guī)范類別

 

展開以顯示有關(guān)該關(guān)系的“刪除規(guī)則”和“更新規(guī)則”的信息。

 

刪除規(guī)則

指定當(dāng)數(shù)據(jù)庫的最終用戶嘗試刪除某一行,而該行包含外鍵關(guān)系所涉及的數(shù)據(jù)時(shí)所發(fā)生的情況。如果設(shè)置為:

 

無操作 顯示一條錯(cuò)誤信息,告知用戶不允許執(zhí)行該刪除操作,DELETE 將被回滾。

級(jí)聯(lián) 刪除包含外鍵關(guān)系中所涉及的數(shù)據(jù)的所有行。

設(shè)置空 如果表的所有外鍵列都可接受空值,則將該值設(shè)置為空。僅適用于 SQL Server 2005。

設(shè)置默認(rèn)值 如果表的所有外鍵列均已定義默認(rèn)值,則將該值設(shè)置為列定義的默認(rèn)值。僅適用于 SQL Server 2005。

更新規(guī)則

指定當(dāng)數(shù)據(jù)庫的用戶嘗試更新某一行,而該行包含SQL Server 外鍵關(guān)系所涉及的數(shù)據(jù)時(shí)所發(fā)生的情況。如果設(shè)置為:

 

無操作 顯示一條錯(cuò)誤信息,告知用戶不允許執(zhí)行該刪除操作,DELETE 將被回滾。

級(jí)聯(lián) 刪除包含外鍵關(guān)系中所涉及的數(shù)據(jù)的所有行。

設(shè)置空 如果表的所有外鍵列都可接受空值,則將該值設(shè)置為空。僅適用于 SQL Server 2005。

設(shè)置默認(rèn)值 如果表的所有外鍵列均已定義默認(rèn)值,則將該值設(shè)置為列定義的默認(rèn)值。僅適用于 SQL Server 2005。

總算是明白了:

 

1.在vs2005中,外鍵約束的屬性窗口中它不叫"級(jí)聯(lián)",叫"層疊",估計(jì)是翻譯錯(cuò)誤.

 

2.vs2005中,在關(guān)系圖中建立外鍵約束,它"默認(rèn)的INSERT 和 UPDATE 規(guī)范"都是"無操作".

 

也就是說,你只要更新或刪除,它都會(huì)報(bào)錯(cuò).

 

3.解決的方法:

 

a.刪除的時(shí)候好辦,級(jí)聯(lián)刪除就可以了.但更新的時(shí)候還得好好考慮.

 

b.或者干脆去掉外鍵約束,自己考慮,然后寫transcation sql.

原文標(biāo)題:SQL Server 外鍵 更新(刪除)規(guī)則

連接:http://www.cnblogs.com/yelaiju/archive/2010/05/31/1748380.html

【編輯推薦】

  1. SQL Server外鍵約束與建立外鍵約束的方案
  2. SQL Server 2000 導(dǎo)入2005的數(shù)據(jù)很簡(jiǎn)單
  3. MS SQL Server 連接字符串的實(shí)際操作簡(jiǎn)介
  4. SQL Server 字符串在實(shí)際操作中的注意事項(xiàng)
  5. SQL Server 連接字符串的實(shí)現(xiàn)步驟
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2010-07-21 15:22:07

2010-07-07 11:03:21

SQL Server索

2010-09-13 13:58:29

sql server外

2010-06-28 12:39:14

SQL Server數(shù)

2010-07-16 11:10:52

SQL server

2010-07-23 09:25:50

SQL Server導(dǎo)

2010-09-13 14:05:09

sql server外

2010-06-28 12:27:35

SQL Server

2010-06-30 17:56:06

2010-06-17 12:26:51

SQL Server索

2010-06-28 13:27:33

SQL Server視

2010-07-05 12:21:57

SQL Server記

2010-07-12 10:13:44

SQL Server表

2010-07-06 09:20:30

SQL Server查

2010-07-23 14:26:37

SQL Server存

2010-07-02 11:10:56

SQL Server

2010-04-16 17:17:31

Oracle訪問

2010-07-05 10:15:40

SQL Server

2010-07-20 11:13:09

SQL Server日

2010-07-21 09:28:34

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久精品一 | 国产精品电影在线观看 | 亚洲精品二区 | 国产日韩欧美一区 | 一区二区三区精品视频 | 精品一级毛片 | 男人视频网站 | 精品乱人伦一区二区三区 | 久久久久久久av麻豆果冻 | 国产欧美日韩精品一区 | 中文字幕二区 | 精品婷婷| 一区二区三区精品在线 | 久久久高清| 欧美性jizz18性欧美 | 国产精品一区二区欧美 | 免费在线观看av网站 | 欧美精品久久久久久 | 国产精品国产a级 | 欧美日韩视频 | а天堂中文最新一区二区三区 | 日韩在线小视频 | 精品一区二区三区四区视频 | 一区二区三区亚洲 | 丁香一区二区 | 91久久久久久 | 欧美一级久久 | 亚洲性免费 | 久婷婷| 日韩欧美一区二区三区 | 国产成人a亚洲精品 | 亚洲精品成人av | 国产激情在线 | 日韩网站在线 | 国产成人精品午夜视频免费 | 国产免费一区二区 | 黄色国产在线播放 | 国产一区二区视频免费在线观看 | 亚洲成人精品 | 国产一级在线 | 欧美一二三四成人免费视频 |