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

Mysql - динамичният SQL не е разрешен в тригера

MYSQL ВЪВ ФУНКЦИЯ И ТРИГЕР НЕ ПОДДЪРЖА ДИНАМИЧНО ВМЪКВАНЕ НО ПРОЦЕДУРАТА МОЖЕ ДА ПОДДЪРЖА ДИНАМИЧНО ВМЪКВАНЕ.

ТАКА ДА МОЖЕТЕ ДА НАПРАВИТЕ ПРОМЕНИ В ПРОЦЕДУРАТА И НАПРАВЕТЕ ПРОЦЕДУРА В attribute_values ​​ТАБЛИЦА ВМЪКНЕТЕ ЗАЯВКА.

INSERT INTO attribute_values ​​VALUES(product_id,column_name,val);

И СЛЕД ВАС ЩЕ БЪДЕ САМО ПРОЦЕДУРА ЗА ОБАЖДАНЕ

CALL attribute_values_after_insert(2,'code',132);

DELIMITER //
drop procedure if exists attribute_values_after_insert //
CREATE PROCEDURE attribute_values_after_insert(IN product_id INT, IN 
column_name VARCHAR(100), IN val VARCHAR(100))
BEGIN
SET @sql = NULL;

INSERT INTO attribute_values VALUES(product_id,column_name,val);

SELECT concat('UPDATE product_attributes SET product_attributes.', column_name, '=', val, ' WHERE id=', product_id) INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @sql = NULL;
END//
DELIMITER ;

DELIMITER //



  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 в docker-compose -- достъпът е отказан

  2. Как човек преобразува секунди (или милисекунди) в времева марка (или просто низ, който изглежда като дата) в mySql

  3. Сигурно съхранявайте потребителите на Android Firebase Auth в база данни на MySQL

  4. Как да запиша данни на нов лист на EXCEL

  5. Избирате всички полета освен едно?