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