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

Тригерът не разпознава таблица (Задействане за разделяне на съдържанието на NEW.values ​​на няколко реда, за да се вмъкне в друга таблица)

ако просто се опитвате да разбиете низовете, можете просто да кодирате 1 и 2 вътре по този начин и няма нужда да вземете 1 и 2 в таблицата с числа, тъй като тази таблица в момента е твърдо кодирана да съдържа 1 и 2 така или иначе.

SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
    @U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);

sqlfiddle

но след това забелязах, че дори не е нужно да се обаждате на SUBSTRING_INDEX() два пъти..това също работи

    SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
        @U = SUBSTRING_INDEX(new.Vu,' ', -1);

sqlfiddle

АКТУАЛИЗИРАНЕ след като видях вашия коментар, разбирам защо сте искали да създадете таблица numbers така че вашият тригер ще бъде нещо подобно. Първо създавате таблица numbers който съдържа редове, които имат n стойности от 1 до 10 (възможен максимален брой полета за разделяне на редове). След това избирате от numbers където n стойности са <=брой полета във вашия номер. След това приложете функции SUBSTRING_INDEX(), за да получите полето на позиция n.

create table numbers 
select 1 as n 
union select 2 
union select 3
union select 4
union select 5
union select 6
union select 7
union select 8
union select 9
union select 10;

CREATE TRIGGER `edit2` AFTER INSERT 
ON `table1` 
FOR EACH ROW BEGIN 

    INSERT INTO table2 (number,player,team,position)
    SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.number,' ',n),' ',-1) as number,
    NEW.player as player,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.team,', ',n),', ',-1) as team,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.position,' ',n),' ',-1) as position
    FROM
    numbers n
    WHERE LENGTH(NEW.number)
             - LENGTH(REPLACE(NEW.number,' ',''))
             + 1 >= n.n;

END

sqlfiddle, за да видите задействането в действие




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заключване на маса с хибернация

  2. Връзка на приложение за Android Studio с mysql

  3. Групиране на клаузи WHERE в Codeigniter

  4. MySQL заместващ знак за замяна

  5. Какъв тип колона трябва да се използва за съхраняване на сериализирани данни в mysql db?