多對多中間表的不使用聯合主鍵,自己持有Id

2021-07-03 13:33:00 字數 790 閱讀 3433

問題是這樣的 在oracle資料庫中存在乙個多對多的的關係,即linkmanage(鏈結表),organ(機構表),中間建有乙個中間表linkorgan(鏈結-機構表),中間表不僅持有多方的id為外來鍵,並且有自己的id屬性(不是聯合主鍵),還有自己的status(狀態)屬性,creattime(建立時間),updatetime(更新時間)之類的屬性。

單純的在多對多方建立關係,在儲存時會出現ora-01400: 無法將 null 插入 ("wjjk"."t_link_organ"."id"),即增加中間表時主鍵為null。

目前解決方案有兩種,一種是使用sequence(首先要有create sequence或者create any sequence許可權),然後寫觸發器。(其他資料庫完全可以直接設定為自增長)。

網友的寫法是

create sequence bign nocycle maxvalue 9999999999 start with 1;//增加資料

insert into table (id,..) values(bign.nextval,..)

在hibernate中的對映檔案可這麼寫

bign

或另外:increment 用與為long,short或者int型別生成唯一標示。只有在沒有其他程序往同一張表中插入資料時才能使用。在集群下不要使用。

另一種是解決方案是在中間表的實體類裡面配置兩個多對一,(或者分別在linkmanage,organ一對多)。

我比較傾向於對二種方案,可能查的時候麻煩點,但是對中間表status欄位利用時會省事很多,並且中間表自己可以持久化,不擔心id的管理問題。

資料庫一對多 聯合主鍵

使用者表 使用者id 主鍵 使用者名稱 表 id 主鍵 名稱,儲存位置 使用者 關係表 使用者id,id 使用者id和id建聯合主鍵 序號 在該使用者的顯示順序 取如 隔行取 取偶數行 select a.id,b.名稱,from 使用者 關係表 a inner join 表 b on a.id b....

thinkphp5多對多關聯,中間表進行多型關聯

這是中間表,不要問我為什麼這麼設計,這是領導要求的 create table at relation table id int 11 not null auto increment,aid int 11 not null comment aid bid int 11 not null comment...

EF 多對多關係 中間表操作

ef多對多關係中間表簡單操作 業務場景 新增中間表 修改中間表 業務中碰到兩個表是多對多關係 示例 實際資料庫中是表users 使用者表 和表rooms 辦公室 和中間表userrooms 使用者的辦公室通行許可權 ef中已經有users使用者表和rooms辦公室表的對映,但是userrooms是沒...