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

Как да напиша mysql функция с динамично име на таблица?

Първо, както бе споменато от @eggyal, това не е най-добрият начин да се справите. Но това може да стане с помощта на подготвени изявления. т.е.

DROP PROCEDURE IF EXISTS `exampleOfPrepareStatement`;

CREATE DEFINER = `user`@`%` PROCEDURE `exampleOfPrepareStatement`(inTableName VARCHAR(100))
    MODIFIES SQL DATA
    SQL SECURITY INVOKER
BEGIN

    SET @hr1 = CONCAT('
        INSERT INTO `',inTableName,'` (
            -- fields (can use parameters same as table name if needed)
        )
        -- either VALUES () or SELECT here
    ');

    -- Prepare, execute, deallocate
    PREPARE hrStmt1 FROM @hr1;
    EXECUTE hrStmt1;
    DEALLOCATE PREPARE hrStmt1;

END;

Разбира се, можете да добавите имена на полета и т.н., ако е необходимо, или да използвате SELECT или UPDATE и т.н. Това не е идеално, но ще направи това, което търсите.

Трябваше да използвам това на някои места преди, където една и съща поддръжка се извършва на множество таблици, които имат различни имена на полета ( / имена на таблица ) и така вместо да пиша една и съща функция 20 пъти, вместо това използвам този тип съхранена процедура, която след това може да бъде извикан за извършване на индексиране и т.н.

Както също бе споменато от @eggyal, макар че това може да направи, както поискате, може да не стане както трябва. Ако можете да предоставите повече информация, тогава може да получите по-добро решение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Управление на потребителски акаунт, роли, разрешения, удостоверяване на PHP и MySQL -- Част 5

  2. Laravel Eloquent срещу конструктор на заявки - Защо да използвате eloquent за намаляване на производителността

  3. Не мога да накарам mysql-connector-python да се инсталира във virtualenv

  4. Съхраняване на кодирани в base64 данни като тип данни BLOB или TEXT

  5. Използване на шел скрипт за вмъкване на данни в отдалечена база данни MYSQL