Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] INSERT SELECT - duplikacja rekordu z kolumną AutoIncrement
Tomplus
post 31.08.2018, 10:53:32
Post #1





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Potrzebuję skopiować w prosty sposób rekord w bazie 1:1 z wyjątkiem ID, które musi być siłą rzeczy unikalne.
Więc stworzyłem coś takiego i nie działa.

  1. INSERT INTO `position`
  2. SELECT *
  3. FROM `position`
  4. WHERE id = 31253 AND cartId = 15647
  5. ON DUPLICATE KEY UPDATE id = MAX(id) + 1;


Z LAST_INSERT_ID() także

Oczywiście bez problemu można napisać zapytanie typu:

  1. INSERT INTO TABLE (a,b,c) SELECT a,b,c FROM TABLE WHERE id = ?;


Jednakże co z sytuacją gdy tabela ma dużo kolumn, albo może mieć w przyszłości dodatkową kolumnę która nie można zapomnieć pominąć przy duplikacji rekordu.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Tomplus
post 31.08.2018, 13:12:52
Post #2





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----




Czyli pozostaje mi rozwiązanie z kolejnym wypisem kolumn albo proteza typu:
  1. CREATE TABLE test_1 SELECT * FROM test WHERE id = 15;
  2. UPDATE test_1 SET id = (SELECT MAX(id) + 1 FROM test LIMIT 1);
  3. INSERT INTO test (SELECT * FROM test_1);
  4. DROP TABLE test_1;
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 02:57