Update
更新函式以每行輸入隨機/唯一 GUID
我是 SQL 新手,正在嘗試執行以下操作。
我正在使用 SQLite 瀏覽器來編輯我擁有的目前文件
我確實有一個 SQLite 數據庫,其中包含大約 1500 行數據,我想為其創建 GUID。
我使用名稱創建了 Col,
GUID
預設值為NULL
.我的更新腳本如下所示:
UPDATE "main"."MyLab" SET guid = (select hex( randomblob(4)) || '-' || hex( randomblob(2)) || '-' || '4' || substr( hex( randomblob(2)), 2) || '-' || substr('AB89', 1 + (abs(random()) % 4) , 1) || substr(hex(randomblob(2)), 2) || '-' || hex(randomblob(6)) )
這為所有 1,500 行提供了相同的值。我想要每一行的唯一值。
只需在表格中添加另一列並標記 AI 複選框。(AI=自動增量)。這將使其自動成為 PK(主鍵)。
它將自動在每一行中使用不同的數字填充列。
現在,如果您想創建另一種類型的鍵,請在更新中使用此 GUID 欄位作為計算的一部分,以便它在每一行中變化。
為什麼更新不起作用?
您的更新不起作用的原因是 b/c 它將所有值設置為相同,因為您沒有更新條件。
例如:
Update MyTable set GUID=1 where AnotherColumn=1
在您的更新中,您沒有條件,因此所有行值都將更新相同。
例如:
Update MyTable set GUID=1+1
換句話說,更新我的表並將 GUID 列設置為 2。
這將與具有以下更新相同
Update MyTable set GUID=1+1 where 1=1
WHERE 子句過濾它將更新哪些行。
因此,總而言之,如果要創建 GUID,則每行的公式中都需要一個變體。
Update MyTable set GUID=1+UniqueValuePerRow
由於更新不會幫助您實現您想要的,您可能需要創建一個 while 循環來一次更新 1 行或了解游標。
…或者簡單地添加一個自動增量欄位,如下圖所示。
乾杯!
子查詢不依賴
MyLab
表中的任何值,因此只需要評估一次。但是,此計算不需要是子查詢。只需刪除括號和 SELECT:
UPDATE MyLab SET guid = hex(...)...