MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの二重挿入(重複エントリ)を防ぐ方法は?


重複エントリを防ぐには、制約UNIQUEを追加します。まずテーブルを作成しましょう-

mysql> create table DemoTable
(
   Id int,
   Name varchar(100)
);
Query OK, 0 rows affected (0.79 sec)

これは、UNIQUE-

を使用してMySQLの二重挿入を防ぐためのクエリです。
mysql> alter table DemoTable add constraint id_NameUnKey UNIQUE(Id,Name);
Query OK, 0 rows affected (0.82 sec)
Records: 0 Duplicates: 0 Warnings: 0

挿入コマンドを使用して、テーブルにレコードを挿入します。同じレコードを再試行すると、「重複エントリ」エラーが表示されます-

mysql> insert into DemoTable values(11,'John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(12,'John');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(11,'John');
ERROR 1062 (23000): Duplicate entry '11-John' for key 'id_NameUnKey'

selectコマンドを使用してテーブルのレコードを表示する-

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+------+------+
| Id   | Name |
+------+------+
| 11   | John |
| 12   | John |
+------+------+
2 rows in set (0.00 sec)

  1. MySQLエントリが存在するかどうかを確認し、存在する場合は、他の列を上書きする方法を教えてください。

    これには、INSERT ON DUPLICATEKEYUPDATEコマンドを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1891    (    FirstName varchar(20),    UNIQUE KEY(FirstName)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTab

  2. 挿入する前にMySQLトリガーを停止するにはどうすればよいですか?

    このための構文は次のとおりです- delimiter // create trigger yourTriggerName before insert on yourTableName    FOR EACH ROW    BEGIN    yourStatement1    .    .    N END // delimiter ; 上記の構文を理解するために、テーブルを作成しましょう- mysql> create table DemoTable1919 &nbs