Mam zapytanie SQL, w którym chcę wstawić wiele wierszy w jednym zapytaniu. więc użyłem czegoś takiego:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
Problem polega na tym, że kiedy wykonuję to zapytanie, chcę sprawdzić, czy UNIQUE
klucz (który nie jest PRIMARY KEY
), np. 'name'
Powyżej, powinien zostać sprawdzony, a jeśli taki 'name'
już istnieje, odpowiedni cały wiersz powinien zostać zaktualizowany, w przeciwnym razie wstawiony.
Na przykład w poniższym przykładzie, jeśli 'Katrina'
jest już obecny w bazie danych, cały wiersz, niezależnie od liczby pól, powinien zostać zaktualizowany. Ponownie, jeśli 'Samia'
nie jest obecny, wiersz należy wstawić.
Myślałem o użyciu:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Oto pułapka. Utknąłem i byłem zdezorientowany, jak postępować. Mam wiele wierszy do wstawienia / aktualizacji na raz. Proszę o wskazówki. Dzięki.
źródło
INSERT INTO ... ON DUPLICATE KEY UPDATE będzie działać tylko dla MYSQL, a nie dla SQL Server.
w przypadku serwera SQL sposobem na obejście tego jest najpierw zadeklarowanie tabeli tymczasowej, wstawienie wartości do tej tabeli tymczasowej, a następnie użycie polecenia MERGE
Lubię to:
źródło
Możesz użyć Zastąp zamiast WSTAW ... NA DUPLIKACIE KLUCZOWEJ AKTUALIZACJI.
źródło