Mysql
 sql >> база данни >  >> RDS >> Mysql

Разграничители в MySQL

Разграничители, различни от ; обикновено се използват при дефиниране на функции, съхранени процедури и тригери, при които трябва да дефинирате множество изрази. Вие дефинирате различен разделител като $$ който се използва за дефиниране на края на цялата процедура, но вътре в него отделните оператори се прекратяват с ; . По този начин, когато кодът се изпълнява в mysql клиент, клиентът може да каже къде завършва цялата процедура и да я изпълни като единица, вместо да изпълнява отделните оператори вътре.

Обърнете внимание, че DELIMITER ключовата дума е функция на командния ред mysql само клиент (и някои други клиенти), а не обикновена езикова функция на MySQL. Няма да работи, ако се опитате да го прехвърлите през API на език за програмиране към MySQL. Някои други клиенти като PHPMyAdmin имат други методи за определяне на разделител, който не е по подразбиране.

Пример:

DELIMITER $$
/* This is a complete statement, not part of the procedure, so use the custom delimiter $$ */
DROP PROCEDURE my_procedure$$

/* Now start the procedure code */
CREATE PROCEDURE my_procedure ()
BEGIN    
  /* Inside the procedure, individual statements terminate with ; */
  CREATE TABLE tablea (
     col1 INT,
     col2 INT
  );

  INSERT INTO tablea
    SELECT * FROM table1;

  CREATE TABLE tableb (
     col1 INT,
     col2 INT
  );
  INSERT INTO tableb
    SELECT * FROM table2;
  
/* whole procedure ends with the custom delimiter */
END$$

/* Finally, reset the delimiter to the default ; */
DELIMITER ;

Опит за използване на DELIMITER с клиент, който не го поддържа, ще доведе до изпращането му до сървъра, който ще отчете синтактична грешка. Например, като използвате PHP и MySQLi:

$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$result = $mysqli->query('DELIMITER $$');
echo $mysqli->error;

Грешки с:

Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на версията на вашия MySQL сървър за правилния синтаксис, който да използвате близо до „DELIMITER $$“ на ред 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. КОРЕКЦИЯ:MySQL – команда SELECT, отказана на потребителя

  2. Как да свържете PHP към MySQL

  3. Динамична връзка с MySQL база данни за Entity Framework 6

  4. Изтрийте sql редове, където идентификаторите нямат съвпадение от друга таблица

  5. Как да тествате дали даден низ е JSON или не?