Autor Zpráva
Petr-K
Profil *
Zdravím,
mám tabulku a pokoušel jsem se do ní vložit nový záznam s navýšením hodnoty (id_rank) o jedna, ale nedařilo se mi. Můžete mi poradit, kde jsou chyby. MySQL mám 5.1. Jen poznámka na závěr, finalní tabulka je s auto_increment, takže jen čistě zvědavost, kde je problém. Děkuji.

Pokus 1
#1093 - You can't specify target table 'def_rank_of_person' for update in FROM clause
INSERT INTO `def_rank_of_person`  (
  `id_rank`,
  `id_language`,
  `label`
) VALUES (
  (
	SELECT MAX(`id_rank`)+1
	  FROM `def_rank_of_person`
	  LIMIT 1
  ),
  'cz',
  'pokus'
)


Pokus 2
#1111 - Invalid use of group function
INSERT INTO `def_rank_of_person`  (
  `id_rank`,
  `id_language`,
  `label`
) VALUES (
  (MAX(`id_rank`)+1),
  'cz',
  'pokus'
)


Pokus 3
#1136 - Column count doesn't match value count at row 1
INSERT INTO `def_rank_of_person`  (
  `id_rank`,
  `id_language`,
  `label`
) VALUES (
  (
	SELECT 
	  MAX(`id_rank`)+1, 
	  'cz', 
	  'pokus'
	 FROM `def_rank_of_person`
  )
)
Tori
Profil
Petr-K:
Zvyšování hodnoty bez Auto_increment“ vs. „finalní tabulka je s auto_increment
Tak jak to teda je - máte na sloupci id_rank auto increment a zkoušíte, jak se to dá udělat bez něj, anebo tam není a chcete ho nějak nasimulovat? Asi jsem nepochopila váš problém.

Ad pokus 1: viz manuál k INSERT ... SELECT
pokus 2: chybí zdrojová tabulka
pokus 3: přebývá VALUES, bez něj to (myslím si) vyhodí stejnou chybu jako u prvního pokusu.
joe
Profil
Takhle by to šlo

INSERT INTO `def_rank_of_person`  (
  `id_rank`,
  `id_language`,
  `label`
) VALUES (
  (SELECT MAX(`drp.id_rank`)+1 FROM `def_rank_of_person`AS drp),
  'cz', 
  'pokus'
)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0