如果用戶名尚未出現,我正在嘗試將一個(硬編碼的)新用戶插入到資料庫中。在下面的代碼中,我試圖讓 sql 檢查用戶是否已經存在,如果存在,則選擇(或什么都不做),否則,將新用戶插入表中。我已經嘗試過多種方式對此進行編碼,但無論我做什么,表都不會填充!任何提示或想法都會非常有幫助,非常感謝。作為參考,我使用 C 語言的 sqllite3 擴展,我使用 sql_exec 函式進行查詢。
嘗試 1:
IF EXISTS ( SELECT * PERSON WHERE USERNAME='name') BEGIN SELECT 1 END ELSE BEGIN INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE) VALUES('name', 'password', 'ONLINE', '12345') END;
嘗試 2:
IF NOT EXISTS ( INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE) VALUES('name', 'password', 'ONLINE', '12345') ) END ;
嘗試 3:
WHERE NOT EXISTS ( INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE) VALUES('name', 'password', 'ONLINE', '12345') )
嘗試 4:
WHERE NOT EXISTS ( INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE) VALUES('name', 'password', 'ONLINE', '12345') );
嘗試 5:
I F NOT EXISTS ( SELECT 1 WHERE USERNAME='kat') BEGIN INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE) VALUES('name', 'password', 'ONLINE', '12345') END;
謝謝!!!!!
uj5u.com熱心網友回復:
您只需在表上為 USERNAME 欄位添加主鍵,然后使用 ON CONFLICT 子句執行以下請求:
INSERT OR IGNORE INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE)
VALUES('name', 'password', 'ONLINE', '12345')
見:https : //sqlite.org/lang_conflict.html
uj5u.com熱心網友回復:
將用戶名欄位設為主鍵或唯一鍵,以便用戶名重復時不會插入。
INSERT INTO PERSON (USERNAME, PASSWORD, STATUS, SIGNATURE)
VALUES('name', 'password', 'ONLINE', '12345')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/375474.html
