🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #230485

obsługa próby wstawienia duplikatu w kluczu unikalnym

#230485
From: Agn
Date: Sun, 20 Jul 2014 15:33
13 lines
1608 bytes
Mam w bazie MySQL tabelę, a w niej między innymi kolumny nrSeryjny i
IDuzytkownika. Każdy użytkownik może tylko raz dodać dany nr seryjny,
aby to zapewnić utworzony został klucz unikalny na te dwie kolumny.

W jaki sposób w aplikacji (PHP, PDO) obsłużyć dodawanie nowego wiersza?
	1. Sprawdzać zapytaniem SELECT, czy jest już wiersz o danym nr seryjnym
i IDuzytkownika. Jeśli nie ma to wykonać zapytanie INSERT, jeśli jest to
w aplikacji wyświetlić komunikat o próbie dodania duplikatu.
	2. Od razu wykonać INSERT, jeśli się nie powiedzie sprawdzić informacje
o błędzie. Jeśli będzie to błąd "Duplicate entry (...) for key
'nr_IDuzytkownik_UNIQUE' wyświetlić komunikat o próbie dodania duplikatu.

Który sposób jest lepszy?
Technical Details
Message-ID: <lqgng8$1qn$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Agn <agn@agn.agn>
Newsgroups: pl.comp.bazy-danych,pl.comp.lang.php
Subject: obsługa próby wstawienia duplikatu w kluczu
 unikalnym
Followup-To: pl.comp.bazy-danych
Date: Sun, 20 Jul 2014 17:33:29 +0200
Organization: Dialog Net
Lines: 13
Message-ID: <lqgng8$1qn$1@news.dialog.net.pl>
NNTP-Posting-Host: dynamic-78-8-247-212.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1405870408 1879 78.8.247.212 (20 Jul 2014 15:33:28 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Sun, 20 Jul 2014 15:33:28 +0000 (UTC)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit