sqlite - INSERT OR IGNORE を動作させる方法
2023-12-25 16:05:46
質問
テーブルにデータを挿入しようとしています。私は、列がすでにデータを持っていない場合、行を挿入したいと思います - 他の列に関係なく。
CREATE TABLE t (
id INTEGER PRIMARY KEY,
name VARCHAR,
other INT
);
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');
上記のスニペットでは、私が考えていたような1行ではなく、3行になってしまいます。重要なのは、実際のSQLが
INSTEAD OF INSERT
トリガーの中で起こっています。
どのように解決するのですか?
置き換える
CREATE TABLE t (
id INTEGER PRIMARY KEY,
name VARCHAR,
other INT
);
で
CREATE TABLE t (
id INTEGER PRIMARY KEY,
name VARCHAR UNIQUE,
other INT
);
すると、次のようになります。
sqlite> CREATE TABLE t (
...> id INTEGER PRIMARY KEY,
...> name VARCHAR UNIQUE,
...> other INT
...> );
sqlite> INSERT OR IGNORE INTO t (name) VALUES ('a');
sqlite> INSERT OR IGNORE INTO t (name) VALUES ('a');
sqlite> INSERT OR IGNORE INTO t (name) VALUES ('a');
sqlite> select * from t ;
1|a|
関連
-
SQLite の if not exist ライクな関数の実装
-
SQLiteの文字列比較における大文字小文字の問題の解決法
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] sqliteのテーブルに新しいカラムを挿入しますか?
-
[解決済み] Android SQLite: 挿入/置換メソッドにおけるnullColumnHackパラメータ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQLiteの便利なコマンドのまとめ
-
SQLiteの文字列比較における大文字小文字の問題の解決法
-
SQLITE3データベースを初めて知る
-
SQLiteのエラーコードのソート
-
SQLite3 コマンドライン操作ガイド
-
[解決済み] SQLiteのスケーラビリティは?[クローズド]
-
[解決済み] Android - SQliteデータベースのプルandroidデバイス
-
[解決済み] SQLiteデータベースに対して、複数の接続から同時に読み書きすることはできますか?
-
[解決済み] SQLiteでテーブルを結合しながらUPDATEするには?
-
ヘッダをデフォルトで表示するようにsqliteを設定する方法