回覆列表
  • 1 # 使用者4683063587506

    可以為這個非主鍵列建立一個分散式表,表名為主表名加該非主鍵列名(table_colum),這個新表的主鍵就是主表要建立唯一約束的非主鍵列,這樣每次往主表插入資料的時候,都先查詢這張新表,如果新表已經存在資料就說明違反唯一約束。

    唯一索引的話,就是這張新表再加一列,這一列存得就是主表的主鍵。使用該唯一索引查詢的話,就是先根據列值,查詢到主表的主鍵值,再根據該主鍵值反查主表,獲取全部的內容。

    上面可能說的比較抽象,我舉個例子:

    在分散式資料庫上建立一張有唯一索引的表

    create table t (a int primary key, b int , c int ) unique key b;

    資料庫在建立這張表的同時,建立一張關聯表

    create table t_b(b int primary key , a int)

    這樣使用者往表t 插入資料時,資料庫相應的往關聯表插入資料

    insert into t(a, b, c) values (1, 2 , 2),(2, 6, 7) , (3 , 100, 2);

    //資料庫關聯插入 insert into t_b (b , a) values (2,1),(6,2) , (100, 3).

    當用戶在插入重複的值時,就可以從關聯表中發現了,同時也可以用關聯表做索引

  • 中秋節和大豐收的關聯?
  • 適馬351.4比尼康351.4怎麼樣,價格差一倍差在哪裡?