私のアプリケーションにSQLiteデータベースを使用しています。私は4列 - Student_Name、Student_Enroll、Student_Mob、Student_Addressをデータベースに持っています。今度は、4つの列の値のいずれかが異なるか、すべての値が異なる場合にのみ、新しいレコードを追加できます。すべての列の値が同じ場合、新しいレコードは生成されません。 この問題を解決するために私を導くことができますか?SQLIteカラム値の変更にユニークなデータを挿入する方法
答えて
列のセットは一意でなければならないことを強制するには、UNIQUE制約を追加します。これは、新しい行を可能に
create table Students (
/* ID INTEGER PRIMARY KEY, */
Student_Name TEXT,
Student_Enroll TEXT,
Student_Mob TEXT,
Student_Address TEXT,
UNIQUE (Student_Name, Student_Enroll, Student_Mob, Student_Address)
);
を4つの列の少なくとも1つが異なる値を持つ場合に限ります。
プレーンなINSERTでは、重複する行を挿入しようとするとエラーになります。あなたは、単に代わりにそれを無視したい場合は、INSERTを使用するか、または無視:私はすべての私の列にUNIQUE設定
データベース作成時に、一意のレコードのみを挿入する列ごとにUNIQUE ...を挿入します。
解決策1:(シンプル)
unique
としてすべての列を定義します。
create table TableName (id integer primary key autoincrement,
Student_Name text not null unique,
Student_Enroll text not null unique,
Student_Mob text not null unique);
あなたは
ソリューション2に必要がある場合は、同様Student_Address
を追加することができます。(ビット複合体)
AND
オペレータ
INSERT INTO TableName (Student_Name, Student_Enroll, Student_Mob)
SELECT varStudentName, varStudentEnroll, varStudentMob
WHERE NOT EXISTS(SELECT 1 FROM TableName WHERE Student_Name = varStudentName OR Student_Enroll = varStudentEnroll OR Student_Mob = varStudentMob);
//If a record already contains a row, then the insert operation will be ignored.
句WHERE
であなたはthe sqlite manualでより多くの情報を見つけることができます。
ライブ例:
- オープンSQLite Online
ペースト次のコード
INSERT INTO demo (id,name,hint) SELECT 4, 'jQuery', 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML' WHERE NOT EXISTS(SELECT 1 FROM demo WHERE name = 'jQuery' OR hint = 'is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML'); SELECT * from demo
ヒットRUN
これは4番目のレコードを挿入しないで、WHERE
節の両方の値を変更するとレコードが挿入されます。
2番目のデータは有効なSQLではありません。 –
問題を修正するか、少なくとも強調表示して修正してください。 –
VALUESの後ろにWHERE句を置くことはできません([manual](http://www.sqlite.org/lang_insert.html参照))。 –
列をUNIQUEに設定しているにもかかわらず、新しいデータを挿入しようとすると、各列に作成された競合を解決する必要があります。
、そう紛争を解決するための動作を定義するには:
"CREATE TABLE table (your columns here...(UNIQUE unique colums here...) ON CONFLICT REPLACE);"
正解+1 –
- 1. Railsのカラムをユニークに変更する
- 2. 挿入し、ユニークな値
- 3. SQLite(Python)にユニークな行だけを挿入する
- 4. null値の列にデータを挿入/更新する方法は?
- 5. JPA/Hibernate:子カラム値を挿入する前に親カラム値を更新する
- 6. 同じテーブルにユニークな値を挿入
- 7. SQLiteのみでユニークな行を挿入する
- 8. ユニークな値のSqlite更新行
- 9. ionicを使用してSQLiteにデータを挿入する方法
- 10. SQLiteデータベースにデータを挿入する正しい方法iPhone
- 11. SQLiteにデータを挿入するには?
- 12. datetimeカラムにデフォルト値を挿入する
- 13. ClickHouse、挿入時に値を変更する方法
- 14. SQLiteにデータ値を挿入するための同期ループ
- 15. T-SQL挿入前の値を変更する方法
- 16. java値をsqliteデータベースに挿入する
- 17. Android SQLiteデータの挿入
- 18. ログアウト時にlaravelのカラムの値を変更する方法
- 19. SQLiteデータベースに変数を挿入する
- 20. 変更可能な値に値を挿入する
- 21. SQLiteのブール値の挿入
- 22. 挿入時にDBカラムのデフォルト値を滑らかにする方法は?
- 23. iPhoneのsqliteデータベースにデータを挿入する - 動作しない
- 24. ユニークなキーと2つのカラムとサブクエリの合計をテーブルに挿入
- 25. 日時の値をandroid sqliteに挿入
- 26. 空の値を挿入するmysqlのdoubleカラムにJTextFormattedを挿入
- 27. Swift3の文字列からSqliteにデータを挿入する方法は?
- 28. (SQLite)カラムのデータ型を変更するには、良い方法が必要です
- 29. 選択した値でSQLiteの挿入クエリを書く方法
- 30. GsonデータをAndroid Sqliteに挿入
。今度は4列目のみを変更し、残りの列は同じままです。新しいレコードが挿入されるかどうか教えてください。私の要求に従って、新しいレコードを挿入する必要があります。 – Philliphe
ユニークは新鮮なレコードのみを保存するのに役立ちます。同じデータが見つかった場合は無視されます – user8119020