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

アイテムの組み合わせがMySQLに2回挿入されるのを防ぎますか?


アイテムの組み合わせが2回挿入されないようにするには、次の構文に示すように、テーブルを変更し、列にUNIQUEを設定します-

alter table yourTableName add constraint yourConstraintName unique(yourColumnName1,yourColumnName2,....N);

まずテーブルを作成しましょう-

mysql> create table DemoTable
(
   Value1 int,
   Value2 int
);
Query OK, 0 rows affected (0.47 sec)

アイテムの組み合わせが2回挿入されないようにするためのクエリは次のとおりです-

mysql> alter table DemoTable add constraint Value1_Value2_ConstraintKey unique(Value1,Value2);
Query OK, 0 rows affected (0.80 sec)
Records : 0 Duplicates : 0 Warnings : 0

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。ここで、重複する組み合わせを挿入しようとすると、「重複エントリ」というエラーが表示され、重複挿入は機能しません-

mysql> insert into DemoTable values(10,10);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(10,20);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(10,10);
ERROR 1062 (23000) : Duplicate entry '10-10' for key 'Value1_Value2_ConstraintKey'
mysql> insert into DemoTable values(20,10);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(20,20);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values(20,10);
ERROR 1062 (23000) : Duplicate entry '20-10' for key 'Value1_Value2_ConstraintKey'

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

mysql> select *from DemoTable;

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

+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     10 |     10 |
|     10 |     20 |
|     20 |     10 |
|     20 |     20 |
+--------+--------+
4 rows in set (0.00 sec)

  1. Windowsでファイルが削除または名前変更されないようにする

    コンピュータをどのような目的で使用する場合でも、名前を変更したり削除したりしたくないファイルがマシン上にある可能性があります。ただし、残念ながらWindowsの動作方法では、ファイルがコンピューターから削除されるのを防ぐのに役立つデフォルトのメカニズムは実際にはありません。あなたのマシンにアクセスできるすべてのユーザーはあなたのファイルを見つけて、あなたのコンピュータからそれらを修正、名前変更、さらには削除することができます。 これらの重要なファイルを保護すること自体がタスクです。 Windowsはデフォルトではファイルを保護しませんが、削除の試みからファイルを保護するのに役立つオプションを

  2. MySQLから最後の10行を選択するにはどうすればよいですか?

    MySQLから最後の10行を選択するには、SELECTステートメントとLimitの概念でサブクエリを使用できます。以下は例です。 テーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) テーブルにレコードを挿入します。 mysql> insert into Last10RecordsDemo values(1,John),(