外來鍵必須是另一個表的主鍵嗎
儘管 FOREIGN KEY 約束的主要目的是控制可以儲存在外來鍵表中的資料,但它還可以控制對主鍵表中資料的更改。例如,如果在 Sales.SalesPerson表中刪除一個銷售人員行,而這個銷售人員的 ID 由 Sales.SalesOrderHeader 表中的銷售訂單使用,則這兩個表之間關聯的完整性將被破壞;SalesOrderHeader 表中刪除的銷售人員的銷售訂單因為與 SalesPerson 表中的資料沒有連結而變得孤立了。
FOREIGN KEY 約束防止這種情況的發生。如果主鍵表中資料的更改使之與外來鍵表中資料的連結失效,則這種更改將無法實現,從而確保了引用完整性。如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束中的值相對應,則該操作將失敗。若要成功更改或刪除 FOREIGN KEY 約束的行,必須先在外來鍵表中刪除或更改外來鍵資料,這將把外來鍵連結到不同的主鍵資料上去。
相關推薦
解決mybatis註解開發時兩表在一個方法裡面新增,一個表自動生成的主鍵作為另一個表的外來鍵新增的問題
1、mapper層裡的方法上添加註解: 實體類屬性:cExperimentaltaskid(id) 表字段:c_experimentaltaskid(主鍵id欄位) @Options(useGeneratedKeys = true, keyProperty = "cExperimentalta
外來鍵必須是另一個表的主鍵嗎
儘管 FOREIGN KEY 約束的主要目的是控制可以儲存在外來鍵表中的資料,但它還可以控制對主鍵表中資料的更改。例如,如果在 Sales.SalesPerson表中刪除一個銷售人員行,而這個銷售人員的 ID 由 Sales.SalesOrderHeader 表中的銷售訂單使用,則這兩個表之間關聯的完整性將被
mysql修改表結構 MySQL修改表結構操作命令總結 MySql資料庫在表中新增新欄位,設定主鍵,設定外來鍵,欄位移動位置,以及修改資料庫後如何進行部署和維護的總結 mysql 如何修改、新增、刪除表主鍵
MySQL修改表結構操作命令總結 以下內容轉自:http://www.jb51.net/article/58079.htm 表的結構如下: 複製程式碼程式碼如下:
Java註解配置數據庫表主鍵
java gen http 運行 數據庫表 integer rac bsp ber 一 數字類型 Integer @Id @GeneratedValue(strategy=GenerationType.IDENTITY) 運行後就Hiber
利用PHP腳本輔助MySQL數據庫管理2-表主鍵表索引
dbi ble nbsp 管理 item tab count key root <?php $dbi = new DbMysql; $dbi->dbh = ‘mysql://root:[email protected]/coffeetest‘; $ma
MySQL 如何修改、新增、刪除表主鍵
在我們使用mysql的時候,有時會遇到須要更改或者刪除mysql的主鍵,我們能夠簡單的使用 alter table 表名 drop primary key;來完成。以下我使用資料表table_test來作了樣例。 1、首先建立一個數據表table_test: create table t
Oracle中建表主鍵自增
首先建立一張表create table member( memberId number primary key, memberMail varchar2(20)not null, memberName varchar2(20) not null, memberPassword varchar2(20) );
hibernate 多對多 中間表主鍵問題 及id生成方式
<id name="id" column="id"> <generator class="sequence"> <param name="sequence">person_seq</param><!--指定sequence名--> </gene
spring boot——關於一個Mysql主鍵的問題(未解決)
問題是這樣的: 我現在有一個被@Entity標記的類TimeLine,其中id為主鍵。 TimeLineController中有一個接收post請求的add()方法,這個方法會接受客戶端傳來的一個表單,表單中的資料是TimeLine的各個屬性。 第一種情況,我的表單中帶有id這個屬性,這樣寫入資料庫
[Cassandra] Cassandra修改表主鍵
原Cassandra庫中有一張表的primary key不能滿足現在查詢的需求,需要修改primary key。而Cassandra的primary key不能直接修改,採取的做法是把原表中的資料匯出,刪除原表,建立新表,再將資料匯入。1 - 匯出原表資料COPY table
GridView中存在多行資料,如何獲取資料表主鍵值以對某一整行資料進行編輯
<%-- asp.net初學者,還請大神多多提點--%> 程式碼如下: protected void grvMHN_RowEditing(object sender, GridViewE
oracle中建立表主鍵id依據sequence自增長
SQL> create table sms_activity( 2 id number, 3 student_name varchar2(50), 4 begin_time varchar2(30), 5 end_time varchar2(
SQL2008資料庫實現表主鍵欄位自增
自增在建表中很常用,除了方便編碼,對於記錄的遍歷也有好處 設定表內主鍵欄位自增的方法有兩種:一種是指令碼建表;一種是視覺化介面設定 一:指令碼建表(以Tuser表為例) CREATE TABLE Tuser( [id] [int] IDENTITY(1,1) NOT
創建數據表主鍵外鍵
col can 一行 更新 http where proc lec 其他 1、創建數據表按行和列的方式存儲,每一行唯一一條記錄,每一列代表記錄中的某個字段或者是域。格式:表的名稱不區分大小寫,不能使用SQL關鍵字;存在多列使用逗號分隔。 create table <t
Mybatis框架(9)---Mybatis自定義外掛生成雪花ID做為表主鍵專案
Mybatis自定義外掛生成雪花ID做為主鍵專案 先附上專案專案GitHub地址 spring-boot-mybatis-interceptor 有關Mybatis雪花ID主鍵外掛前面寫了兩篇部落格作為該專案落地的鋪墊。 1、Mybatis框架---Mybatis外掛原理 2、java演算法---靜態內部類
mysql更新一個表裏的字段等於另一個表某字段的值
int insert tco update ins into date 一個 部分 update a left join c on a.id = c.id set a.body = c.c1 where a.id=c.id;update zcat as z left joi
更新表字段,從另一個表中查詢出來
code upd 另一個 查詢 print ng- ble where sql UPDATE t SET t.Premium = (SELECT TOP 1 Max( t2.Premium ) FROM dbo.TableName t
sql根據一個表查詢的數據作為條件查詢另一個表
mar 註意 pan color pen market 訂單號 order art 代碼格式如下: select * from BillConsume where obId in (select obId from OpenBills where clearThe
Mysql數據庫一個表字段中存了id,並以逗號分隔,id對應的詳細信息在另一個表中
l數據庫 cat sel left 現在 籃球 sql group 查詢 有兩張表, 一張為愛好表b表 一張為用戶表 u表 u表 id 名稱 愛好Id 1 張三 1,2,3,4 2 李四 2,5 b表 id 名稱 1 打乒乓
sql的存儲過程實例--動態根據表數據復制一個表的數據到另一個表
strong font lar gef 拼接 creat pan class _id 動態根據表數據復制一個表的數據到另一個表 把track表的記錄 根據mac_id後兩位數字,復制到對應track_? 的表中 如:mac_id=12345678910,則後兩位10 對