hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
SQLele資料集/UNIQUE制約 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

SQLele資料集

UNIQUE制約

UNIQUE制約とは何か

テーブルを作成するときにUNIQUE制約を加えると「値の重複が許されない列(カラム)」を作ることができます。 既存の行の持つ値と重複した値を持つ行をINSERT文で追加しようとすると、後から追加しようとしたデータが追加されません。

REPLACE文による更新

後から追加するデータの方を有効にする(既存のデータを破棄する)場合は、INSERT文の代わりにREPLACE文を利用します。このとき主キーは新しいものが振り直され、古い主キーは破棄されます。 主キーを変更したくない場合は、WHERE句を利用してUPDATE文を利用する必要があるでしょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// HSP3.1 & SQLele1.14 & SQLite3.6.14 で動作確認済み
#include "sqlele.hsp"
sql_open ":memory:"
sql_q "CREATE TABLE [テーブル] (id INTEGER PRIMARY KEY, keyword TEXT UNIQUE)"
sql_q "BEGIN"
sql_q "INSERT INTO [テーブル] (keyword) VALUES ('赤')" // 1回目
sql_q "INSERT INTO [テーブル] (keyword) VALUES ('青')" // 2回目
sql_q "INSERT INTO [テーブル] (keyword) VALUES ('緑')" // 3回目
sql_q "INSERT INTO [テーブル] (keyword) VALUES ('赤')" // 4回目だが、すでに「赤」があるので挿入されない
sql_q "INSERT INTO [テーブル] (keyword) VALUES ('白')" // 5回目だが、idは4になる
sql_q "REPLACE INTO [テーブル] (keyword) VALUES ('緑')" // すでに「緑」があるが、REPLACE文なので置きかえられる(idは5)
sql_q "COMMIT"
sql_q "SELECT * FROM [テーブル]"
repeat stat
mes strf("{%1d}:", sql_i("id")) + sql_v( "keyword" )
sql_next
loop
sql_close
stop


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2009-06-28 (日) 18:25:21 (1623d)