測試以兩個外來鍵為復合主鍵的表,兩個外來鍵空值情況

2021-08-11 15:04:03 字數 1540 閱讀 2756

多表關聯的情況下,刪除主表的一條資料,同時修改與主表關聯的從表對應資料,如 tbl_a表,tbl_b表,兩表互動表tbl_a_b。當tbl_a中的資料某條資料刪除時,需要先清除tbl_a_b表中對應的資料才能刪除tbl_a中的資料,但有時不想刪除tbl_a_b的資料,就需把tbl_a_b中對應的a_id改為乙個無價值的值。首先想到的就是null。

建表tbl_a:

create

table tbl_a(a_id int

primary

key);

新增測試資料:

insert

into tbl_a values(1);

insert

into tbl_a values(2);

建表tbl_b

create

table tbl_b(b_id int

primary

key);

新增測試資料:

insert

into tbl_b values(10);

insert

into tbl_b values(9);

建tbl_a和tbl_b的互動表tbl_a_b:

create

table tbl_a_b(

a_id int,

b_id int,

constraint fk_a foreign

key(a_id) references tbl_a(a_id),

constraint fk_b foreign

key(b_id) references tbl_b(b_id),

constraint pk_key_a_b primary

key(a_id,b_id)

);

1.互動表tbl_a_b新增a_id,b_id不為空的資料:

insert

into tbl_a_b values(1,10);

新增成功。

2.互動表tbl_a_b新增a_id為空的資料:

insert

into tbl_a_b values(null,10);

報錯:ora-01400 a_id不能為空

3.互動表tbl_a_b修改a_id改為null的為空的資料:

update tbl_a_b set a_id=null;
報錯:ora-01407 a_id不能更新為null。

經測試,無法將復合主鍵中的某一項改為null,只能在tbl_a表與tbl_b表中新增一條無用資料:

insert

into tbl_b values(0);

insert

into tbl_a values(0);

tbl_a表與tbl_b表每次刪除資料時,將tbl_a_b中對應的a_id,b_id 值更新為0.

外連線組合兩個表

表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵 表2 address 列名 型別 addressid int personid int city varchar state varchar ...

只有兩個鍵的鍵盤

最初在乙個記事本上只有乙個字元 a 你每次可以對這個記事本進行兩種操作 copy all 複製全部 你可以複製這個記事本中的所有字元 部分的複製是不允許的 paste 貼上 你可以貼上你上一次複製的字元。給定乙個數字 n 你需要使用最少的操作次數,在記事本中列印出恰好 n 個 a 輸出能夠列印出 n...

只有兩個鍵的鍵盤

最初在乙個記事本上只有乙個字元 a 你每次可以對這個記事本進行兩種操作 copy all 複製全部 你可以複製這個記事本中的所有字元 部分的複製是不允許的 paste 貼上 你可以貼上你上一次複製的字元。給定乙個數字 n 你需要使用最少的操作次數,在記事本中列印出恰好 n 個 a 輸出能夠列印出 n...