Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 저장 프로시저를 생성할 때 `definer`가 필요합니까?

<시간/>

아니요, 저장 프로시저를 생성할 때 정의자 부분은 필수가 아닙니다. 정의자를 생성하고자 할 때 사용합니다.

MySQL.user 테이블에서 모든 사용자와 호스트를 확인하십시오 -

mysql> select user,host from mysql.user;

다음은 출력입니다 -

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Manish           | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| Adam Smith       | localhost |
| User1            | localhost |
| am               | localhost |
+------------------+-----------+
9 rows in set (0.03 sec)

여기에서 Adam Smith라는 정의자를 만들어 보겠습니다. 저장 프로시저를 생성하는 쿼리는 다음과 같습니다. -

mysql> delimiter //
mysql> CREATE DEFINER = 'Adam Smith'@'localhost' procedure Sp_Definer()
   -> begin
   -> select 'Hello MySQL';
   -> end;
   -> //
Query OK, 0 rows affected (0.14 sec)
mysql> delimiter ;

CALL 명령을 사용하여 저장 프로시저를 호출합니다. 구문은 다음과 같습니다 -

CALL yourStoredProcedureName();

위의 저장 프로시저를 호출합니다.

mysql> call Sp_Definer();

다음은 출력입니다.

+-------------+
| Hello MySQL |
+-------------+
| Hello MySQL |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)