Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyzwalacz nie rozpoznaje tabeli (wyzwalacz, aby podzielić zawartość NEW.values ​​na wiele wierszy w celu wstawienia do innej tabeli)

jeśli próbujesz tylko wydzielić ciągi, możesz po prostu zakodować 1 i 2 w tym miejscu w ten sposób i nie ma potrzeby chwytania 1 i 2 w tabeli liczb, ponieważ ta tabela jest obecnie zakodowana na stałe tak, aby zawierała 1 i 2.

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

sqlfiddle

ale potem zauważyłem, że nie musisz nawet dwukrotnie wywoływać SUBSTRING_INDEX() .. to też działa

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

sqlfiddle

AKTUALIZUJ po obejrzeniu Twojego komentarza rozumiem, dlaczego chciałeś utworzyć tabelę numbers więc twój wyzwalacz będzie wyglądał mniej więcej tak.Najpierw utwórz tabelę numbers który zawiera wiersze, które mają n wartości od 1 do 10 (możliwa maksymalna liczba pól do podziału na wiersze). Następnie wybierasz z numbers gdzie n wartości to <=liczba pól w Twojej liczbie. Następnie zastosuj funkcje SUBSTRING_INDEX(), aby uzyskać pole na pozycji 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, aby zobaczyć wyzwalacz w akcji




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Plik danych ładowania MySQL - akceleracja?

  2. wyeksportuj zawartość tabeli bazy danych mysql do pliku PDF za pomocą php

  3. Dlaczego SQLAlchemy create_engine z charset=utf8 zwraca typ Pythona <str> i nie wpisuje <unicode>?

  4. Jak obsługiwać starszą bazę danych we frameworku Django

  5. problem z zestawem znaków w mysql