sql >> Database teknologi >  >> RDS >> Mysql

Afgrænsere i MySQL

Andre skilletegn end standard ; bruges typisk til at definere funktioner, lagrede procedurer og triggere, hvor du skal definere flere sætninger. Du definerer en anden skilletegn som $$ som bruges til at definere slutningen af ​​hele proceduren, men inde i den afsluttes individuelle udsagn hver af ; . På den måde, når koden køres i mysql klient, kan klienten fortælle, hvor hele proceduren slutter og udføre den som en enhed i stedet for at udføre de individuelle sætninger inde.

Bemærk, at DELIMITER nøgleordet er en funktion af kommandolinjen mysql kun klient (og nogle andre klienter) og ikke en almindelig MySQL-sprogfunktion. Det vil ikke fungere, hvis du forsøgte at sende det gennem et programmeringssprog API til MySQL. Nogle andre klienter som f.eks. PHPMyAdmin har andre metoder til at angive en ikke-standardadskiller.

Eksempel:

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 ;

Forsøger at bruge DELIMITER med en klient, der ikke understøtter det, vil det medføre, at det sendes til serveren, som vil rapportere en syntaksfejl. For eksempel ved hjælp af PHP og MySQLi:

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

Fejl med:

Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MySQL-serverversion for den rigtige syntaks, der skal bruges nær 'DELIMITER $$' på linje 1



  1. 10 tips og tricks til at administrere en effektiv database

  2. MySQL:er en SELECT-sætning skelet mellem store og små bogstaver?

  3. SQL Server Join Estimation ved hjælp af Histogram Coarse Alignment

  4. Hvordan har man komplet offline funktionalitet i en webapp med PostgreSQL-database?