我目前正在做一個專案,我想在 SQLite 資料庫中存盤兩個用戶之間的連接和一些附加資訊。問題是我想只存盤一次這個連接并且沒有這個連接的多個條目。
因此,如果我有 userA 和 userB,例如建立此連接的時間(userA、userB、時間),我也不希望能夠存盤反向(userB、userA、時間)。
我目前的解決方案是對用戶進行排序并將它們組合成一個字串,然后用它來創建一個主鍵(userAuserB、userA、userB、time),防止重新插入。但我認為這不是正確的做法。
這個任務有更好的解決方案嗎?
謝謝,伊普塞隆。
uj5u.com熱心網友回復:
如果您的 SQLite 版本是 3.31.0 ,您可以在表中定義 2 個生成的列,這將是列的最小和最大連接值,然后您可以為它們定義一個唯一約束:
CREATE TABLE tablename (
userA TEXT,
userB TEXT,
user1 GENERATED AS (MIN(userA, userB)),
user2 GENERATED AS (MAX(userA, userB)),
UNIQUE(user1, user2)
);
生成的列是virtual,這意味著它們不存盤在表中。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/430930.html
