Oracle 不使用序列來實現增量,總是違反唯一性約束,為什麼?

發布 科技 2024-05-23
13個回答
  1. 匿名使用者2024-02-11

    如果你寫的語句有問題,給你乙個語句的表象,按照這個寫就沒有問題了。

    例如,update seqtab set id = id + 1 where tablename = ??returning id into v_curvalue;

    其中,seqtab 是主鍵維護表,id 是表中 id 值最大的字段,tablename 是你說的表名字段,v curvalue 是定義的變數,所以這條語句建議你寫在儲存過程中(以 v curvalue 作為輸出引數)或者寫乙個函式, 和 v curvalue 可以用作函式的返回值。如果同時獲取更新值的值,則不會出現索引衝突。

    我懷疑你是先更新再選擇再選擇再更新的形式實現的,如果頻繁取值,可能會因為併發而造成重複取當前ID的現象,這就是你說的違反唯一性約束的原因。

  2. 匿名使用者2024-02-10

    怎麼會這樣?

    select id from t2 where tablename='t1' for update;

    取出新值 aid=id+1

    update t2 set id = id + 1 where tablename = 't1';

    insert into t1(f1) values(aid);

    commit;

  3. 匿名使用者2024-02-09

    您是否每次都先找出最大的 ID,然後在每次插入時新增 1? 這是非常糟糕的,如果多人同時操作,會出現問題,建議使用oracle的序列來解決。

  4. 匿名使用者2024-02-08

    您的字段要求字段值是唯一的,並且您始終插入重複值,因此丟擲違反了唯一性約束。

    只要您可以確保字段值是唯一的,您就可以不使用預言機序列。

  5. 匿名使用者2024-02-07

    你是怎麼寫的?

    另外,我不會用完序列......

  6. 匿名使用者2024-02-06

    唯一的反向約束是主鍵重複。 以下是解決方法:

    1. 可以在建表期間或建表後建立非空約束。 如下圖所示。

    2. 查詢資料字典中新建立的非空約束。

    3. 唯一約束用於確保欄位中沒有重複值或字段組合。

    4. 可以在表建立時或建立表後建立相同的唯一約束。

    5. 最後,查詢資料字典中的唯一約束。

  7. 匿名使用者2024-02-05

    反唯一約束? 它應該是主鍵的副本。

    解決方案取決於您匯入資料的方式。

    如果執行oracle import命令,可以設定引數,忽略錯誤的匯入匯入資料,或者無條件覆蓋原始資料。

  8. 匿名使用者2024-02-04

    1.匯出時,只能匯出資料,而不包含物件結構,並且庫的物件與匯出庫的物件不同,原始資料庫可能沒有約束索引,但會導致本地索引。

    2.在匯入表的所有唯一索引或關鍵索引之前,請將其刪除。 匯入後,將刪除重覆記錄,並建立已刪除的受約束索引。

  9. 匿名使用者2024-02-03

    主鍵衝突。 通常,匯入的資料表中有資料。

    擦除所有表並重新匯入它們。

  10. 匿名使用者2024-02-02

    例如,您可以使用引數 full=y 匯出完整資料庫而不是使用者下的表

  11. 匿名使用者2024-02-01

    你說的那個操作應該是第乙個操作,對吧,我懷疑你的表ln b debttrade有測試資料沒有被刪除,或者有一段資料(可能沒有被你存入)。 那麼如果測試資料的 debttradeid 中有乙個值,該值與序列的某個值相同,就會出現違反唯一約束的問題。 說白了,序列沒有錯,問題是表裡已經有值了,導致了問題。

    那為什麼後來沒有出現呢?

    因為你可能只有乙個值,過了這個值之後,序列繼續增加,不再有相同的值,那麼就不會有違反唯一約束的問題。

  12. 匿名使用者2024-01-31

    有兩種方法可以做到這一點:一種是處理重複資料,另一種是修改約束。

  13. 匿名使用者2024-01-30

    相關回答
    10個回答2024-05-23

    游標 cur 是定義乙個游標,然後將游標中定義的查詢語句儲存到游標中。 >>>More

    5個回答2024-05-23

    impsystem/manager

    file=bible_db >>>More

    9個回答2024-05-23

    對於企業管理者來說,客戶和業務員更關心的是,如何更好的了解業務員和業務員跟進客戶的情況,那麼企業需要一套軟體系統來管理客戶和業務員,更好地了解業務員和客戶之間的溝通情況,就可以了解企業如果不使用一套銷售管理系統會出現什麼問題呢? >>>More

    12個回答2024-05-23

    有些遊戲有高中英語水平就足夠了。 但是,有些遊戲要求雅思成績達到 7 級,或大學英語至少達到 CET6。 更重要的是,你需要有大學英語8級,並經常去外國英語論壇熟悉他們的當地俚語才能完全理解。 >>>More

    6個回答2024-05-23

    樓上是胡說八道,電子制動力分配,防抱死制動,還有電子轉向系統什麼的,F1曾經在那裡,國際汽聯在06年修改了F1規則取消了,你不想想。世界上資金最多的活動,你怎麼能連這個東西都裝不下呢?現在它都是民用汽車的標準配置,而且都是標準配置,並說!!1.規則限制。 >>>More