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

DELIMITER // MySQLのトリガーで何をしますか?


DELIMITER //を使用して、ステートメントをセミコロン(;)から//に変更できます。これで、トリガーにセミコロンを使用して複数のステートメントを記述できます。

これがトリガーのデモです。この例では、1000未満のEmployeeSalaryを入力すると、デフォルトで10000に設定されます。

まず、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table EmployeeTable
-> (
-> EmployeeId int,
-> EmployeeName varchar(100),
-> EmployeeSalary float
-> );
Query OK, 0 rows affected (0.76 sec)

テーブルを作成した後、挿入コマンドでトリガーを作成する必要があります。トリガーを作成するためのクエリは次のとおりです。

mysql> delimiter //
mysql> create trigger CheckSalary before insert on EmployeeTable
-> for each row if new.EmployeeSalary < 1000 then set
-> new.EmployeeSalary=10000;
-> end if;
-> //
Query OK, 0 rows affected (0.40 sec)
mysql> delimiter ;

これで、挿入コマンドを使用してトリガーを確認できます。 1000未満のEmployeeSalaryを挿入した場合、エラーは発生しませんが、10000を指定したデフォルト値が保存されます。

レコードを挿入するためのクエリは次のとおりです-

mysql> insert into EmployeeTable values(1,'Carol',500);
Query OK, 1 row affected (0.25 sec)

次に、selectステートメントを使用してテーブルのすべてのレコードを確認します。クエリは次のとおりです。

mysql> select *from EmployeeTable;

以下は出力です。

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Carol        | 10000          |
+------------+--------------+----------------+
1 row in set (0.00 sec)

1000または1000より大きい値を挿入すると、番号のみが表示されます。 truncateコマンドを使用してテーブルから前のレコードを削除しました。

mysql> truncate table EmployeeTable;
Query OK, 0 rows affected (1.44 sec)

テーブルにレコードを挿入するためのクエリ。

mysql> insert into EmployeeTable values(2,'Bob',1000);
Query OK, 1 row affected (0.14 sec)

mysql> insert into EmployeeTable values(3,'Carol',2500);
Query OK, 1 row affected (0.19 sec)

これは、selectステートメントを使用してテーブルのすべてのレコードをチェックするためのクエリです。

mysql> select *from EmployeeTable;

以下は出力です。

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 2          | Bob          | 1000           |
| 3          | Carol        | 2500           |
+------------+--------------+----------------+
2 rows in set (0.00 sec)

上記のサンプル出力を見てください。EmployeeSalaryは1000以上です。これにより、給与が得られます。 1000未満の場合、デフォルト値は10000に設定されていることに注意してください。


  1. MySQL SELECT(COLNAME)の括弧はどういう意味ですか?

    SELECT(COLNAME)は、その列のエイリアスを作成していることを意味します。例を見て、テーブルを作成しましょう- mysql> create table DemoTable865(    FirstName varchar(100),    LastName varchar(100) ); Query OK, 0 rows affected (0.77 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable865 values('Chris

  2. 選択@@identityはMySQLで何をしますか?

    @@identityは、現在のセッションのauto_increment列に最後に挿入された値を返します。まずテーブルを作成しましょう- mysql> create table DemoTable(    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    UserName varchar(100) ); Query OK, 0 rows affected (0.67 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoT