![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Polecenie w bazie MySQL: Update shop_product set symbol=symbol+'0' wyrzuca błąd: #1062 - Duplicate entry '0' for key 'shop_product_symbol' Chcę zmienić indeksy (symbol) wszystkich artykułów z tabeli shop_product z 6 znakowych w systemie abk130 na 7 znakowe, czyli abk1300. Pojawia się błąd jw. Co powinienem zmienić w poleceniu? Z góry dziękuję za pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tym zapytaniem
Kod Update shop_product set symbol=CONCAT(symbol,'0'); Komunikat masz konkretny, pojawia ci się zapytanie gdzie chcesz powtórzyć unikalny symbol i prawdopodobnie posiadasz JUŻ - także np. abk1300. Jak proponowałbym zrobić inaczej. Stworzyć kolumnę symbol2 [ale nie unikalną] a następnie dopiero dodać to ZERO. Potem tylko zmienisz nazwy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Wszystko zależy od skomplikowania bazy i jak dużą ilość rekordów posiadamy.
Przy referencjach nie warto. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Albo użyj
Obawiam się stwożyć dotakową kolumnę, więc skorzystałem z
Jednak zamiast dodać 0 do wszystkich wierszy kolumny symbol polecenie to zminiło tylko pierwszy wiersz w tej kolumnie na wartość 0. Co z tym zrobić? W kolumnie jest ok 7000 wierszy (indeksów artykułów). Podobną operację (dodania 0 do indeksów artykułów) zrobiłem w systemie WF-MAG (baza SQL), ale to przez pomoc ASSECO (produceta). Polecenie było trochę odmienne ze względu na specyfikację innych artykułów niż te w sklepie www. Wyglądało tak:
Może to coś naprowadzi .... Spróbuj tym zapytaniem Kod Update shop_product set symbol=CONCAT(symbol,'0'); Komunikat masz konkretny, pojawia ci się zapytanie gdzie chcesz powtórzyć unikalny symbol i prawdopodobnie posiadasz JUŻ - także np. abk1300. Jak proponowałbym zrobić inaczej. Stworzyć kolumnę symbol2 [ale nie unikalną] a następnie dopiero dodać to ZERO. Potem tylko zmienisz nazwy. Baza ma ponad 7000 rekordów, więc rzeczywiście możliwe jest, że jest jakiś rekord 7 znakowy z 0, ale jak to można obejść bez tworzenia dodatkowej kolumny, czego się obawiam. Nie idź to drogą. Więcej problemów możesz sobie narobić... Nie poszedłem (IMG:style_emoticons/default/smile.gif) . Tylko co proponujesz? Ten post edytował murasek 8.05.2016, 15:13:53 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
no a próbowałeś użyć tego zapytania z concat?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Więc jak zmieniło ci na wartość 0 to oznacza że symbol = symbol + '0' nie działa, do operacji na stringach służy właśnie CONCAT.
A zanim użyjesz, możesz sprawdzić czy rekord o symbolu z dodatkowym zerem istnieje. Jeżeli istnieje to może należy przemyśleć co chcesz zrobić, bo być może powinny być dodane dwa zera. A może jakaś specjalna sekwencja znaków. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Więc jak zmieniło ci na wartość 0 to oznacza że symbol = symbol + '0' nie działa, do operacji na stringach służy właśnie CONCAT. A zanim użyjesz, możesz sprawdzić czy rekord o symbolu z dodatkowym zerem istnieje. Jeżeli istnieje to może należy przemyśleć co chcesz zrobić, bo być może powinny być dodane dwa zera. A może jakaś specjalna sekwencja znaków. Dziękuję (IMG:style_emoticons/default/smile.gif) CONCAT rozwiązało sprawę. Wcześniej źle zrozumiałem Twoją sugestię. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:52 |