簡體   English   中英

CodeIgniter ActiveRecord子查詢評估

[英]CodeIgniter ActiveRecord Subquery Evalulation

我有一個應用程序,我希望以連續的升序分配用戶項,但只針對用戶先前分配的item_ids進行連續分配。

-- Primary query.
INSERT INTO user_items ( user_id, item_id ) VALUES ( <user_id>, <item_id> ); -- There are more fields, but they are not relevant to this question.

-- Desired item_id value subquery.
SELECT MAX( sq.item_id ) + 1 from ( select item_id from user_items where user_id = {$item_id} ) as sq

我已經測試了完整的查詢(使用子查詢),並且該查詢在數據庫上有效,但是當我使用$this->db->set()方法,並且$escape參數等於FALSE ,每插入一個零時間; 似乎在調用insert()方法之前先評估了子查詢(指定為字符串)。

我可以指示set()方法將子查詢放入生成的INSERT查詢中,以便在數據庫上進行評估嗎?

以這種方式使用它不是一個好的選擇/主張,因為它們可以是並行查詢,可以讀取該數據並仍然獲得相同的值。 可能有重復價值的機會。

而是創建一個序列表,將生成的ID的值存儲在序列表中。 要使用新ID,請執行以下步驟:

  1. 鎖定序列表
  2. 選擇,增加值。
  3. 用增加的值更新條目
  4. 釋放鎖
  5. 使用更新的值

這樣,您可以確保相同的唯一價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM