刪除自動生成主鍵 id 后如何解決數據庫 id 問題?
問題:
在一個自動抽題系統中,數據庫使用主鍵自增長,且系統提供了刪除功能。在刪除某些題目后,題目數量和數據庫 id 之間出現不一致。如何解決此問題?
解決方案:
直接查詢所有剩余的題目,然后從中隨機選擇即可。無需關注數據庫 id 是否連續。例如:
select * from questions;
登錄后復制
此查詢將返回所有剩余的題目,然后您可以使用 random 函數從中隨機選擇一個,如下所示:
// 獲取所有剩余題目 List<Question> questions = jdbcTemplate.query("SELECT * FROM questions", Question.class); // 從題目列表中隨機選擇一個 Question question = questions.get(new Random().nextInt(questions.size()));
登錄后復制
這種方法不會受數據庫 id 變化的影響,始終可以確保抽取到有效題目。