主表 A表
create table A(
a_id int auto_increment,
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
子表 B表
create table B(
a_id int auto_increment,
b_id int not null,
primary key (`a_id`),
foreign key (`b_id`) references A(`a_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
已知 每個表有一個主鍵,只有一個欄位可以auto_increment
B 表 b_id欄位的值如何跟隨主表 a_id 欄位自增?應該怎么關聯,能同時加入資料,小弟新手求大神指點!
uj5u.com熱心網友回復:
外鍵的含義是 B 表 b_id欄位的值要么是null ,要么是來自于A表a_id。向B表中b_id欄位寫入其他值是不允許的。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
B表的b_id值,可不可以跟隨主鍵表a_id一樣自動添加有序列的值,并且不重復, 還不用PHP來寫查詢,處理事務。還有一點,B表不能出錯,出錯了 自增的順序會跳(失敗也會+1),怎么搞一個表既有主鍵又有外鍵?大神在哪里
uj5u.com熱心網友回復:
把描述說清楚-沒明白uj5u.com熱心網友回復:
第一個表:A表 欄位aid 是主鍵自增長;第二個表:B表 欄位aid、 bid , aid是主鍵自增,bid欄位是A表的外鍵;
問題一:B表的bid欄位值 如何跟隨 A表的主鍵欄位值 一致自增長? (bid欄位沒有auto_increment約束)
問題二:B表如果insert插入失敗aid主鍵列的值也會auto_increment ,該如何解決這個問題?
大神們 難道沒有這樣的情況嗎?還是我沒說明白,關系型資料庫 不就是要這樣關聯嗎?
uj5u.com熱心網友回復:
主表A插入后的主鍵值 再賦值給 B表要插入的外鍵資料 就可以了, 所謂的外鍵約束 本來就是這么實作的轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86705.html
標籤:MySQL
