Mam problem z MySQL w Delphi.
Mianowicie jak mógłbym zrobić by dane które są zapisywane do tabeli były zapisywane tylko raz?
Chodzi mi o to że mam np. Edit1 i po kliknięciu na button1 zawartość Edit1.Text jest wprowadzana do jakiejś tabeli w bazie danych MySQL lecz to nie jest problemem. Problem stanowi pojedyńczy zapis czyli tak by dwa razy w bazie danych nie mogły znaleŹć się identyczne rekordy...
Jak tego dokonać?
Na przykład sprawdzać czy w bazie już znajduje się taki rekord?
Powinien wystarczyć prosty SELECT
Pzdr.
No dobrze a jak mam np takie coś:
SQLQuery := Format('INSERT INTO baza SET tresc="%s"', [Edit1.Text]);
To jak do czegoś takiego dodać SELECT tak by sprawdzało czy pozycja już istnieje i jak istnieje by nic nie robiło a jak nie by wstawiło dane do bazy?
No już 40 osób odwiedziło ten temat... Proszę o jakąś pomoc...
O ja też właśnie tego potrzebuj. Zna ktoś odp?
heh a już myślałem że ktoś mi odpowiedział :D
SELECT count(*) FROM baza WHERE Tresc='nowa tresc'
Oczywiście 'nowa tresc' to wartosc, ktora chcesz wrzucic do bazy. Pobierasz wynik tego zapytania i sprawdzasz czy jest > 0. Jeśli tak to znaczy, że już jest w bazie, jeśli nie to dodajesz.
Pzdr.
Albo pole tresc ustawiasz na unique i baza sama sprawdzi czy takie coś już nie zostało wpisane. Przy próbie ponownego dodania wypluje wyjątek/błąd zależy przez co się łączysz.
Ustawiłem UNIQUE lecz w związku z tym mam pytanie czy można jakoś zmienić treść wyskakującego komunikatu gdy klucz już istnieje?
Zeelof napisał(a)
Ustawiłem UNIQUE lecz w związku z tym mam pytanie czy można jakoś zmienić treść wyskakującego komunikatu gdy klucz już istnieje?
http://4programmers.net/Delphi/Artyku%C5%82y/Wyj%C4%85tki
i/lub
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_3#id-Wyj%C4%85tki
Pzdr.
Zamiast INSERT INTO robcie REPLACE INTO
To dziala tak:
- jesli wartosc juz jest (MySQL patrzy na klucz glowny tabeli, np. pole ID), to ją zedytuje
- jesli jej nie ma, doda nowy rekord
To cos pomiedzy insert, a update ;)