Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Metoda na nie dodawanie takich samych rekordów do tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
yalus
Witam,

mam pytanie

używam takiego zapytania aby dodać nowe rekordy do tabeli:

  1. INSERT INTO tabela(id1, i2d) VALUES
  2. (1,1),
  3. (1,2),
  4. (1,3)


jak zabezpieczyć takie zapytanie aby ustrzec się przed wprowadzeniem do tabeli już istniejącego tam rekordu np:

  1. INSERT INTO tabela(id1, i2d) VALUES
  2. (1,1),
  3. (2,2),
  4. (3,3)


pierwszy rekord z tego zapytania juz istnieje - zostal wprowadzony pierwszym zaptaniem,

czy można to zrobić tym sposobem czy raczej zmienić zapytanie??


pozdrawiam
Pyton_000
INSERT IGNORE INTO
To zadziała jeżeli PrimaryKey lub unique ma konflikt
yalus
Witam,
dzieki za odpowiedz

ale niestety insert ignore nie zadziala bo te dwie kolumny nie sa unique ani primarykey
w kolumnach magą być duplikaty ale zależy mi aby nie bylo duplikatów par tzn. moze byc tak:

1|1
1|2
2|2

Ale nie moze byc
1|1
1|1

Pyton_000
No to właśnie do tego celu stosuje się UNIQUE i po problemie
yalus
masz na myśli że mam założyć unique na te kolumny ?

jeżeli tak to nie mogę, bo w każdej kolumnie mogą zdażyć się duplikaty

nie może być tylko takich sam par w kolumnach, tak jak pisałem wcześniej:

może być tak:
1|1
1|2
2|2
tutaj są tylko duplikaty w poszczególnych kolumnach

Ale nie moze byc tak
1|1
1|1
te dwa rekordy są zduplikowane bo w kolumnie id1 i ad2 znajdują się takie same wartości dla dwóch rekordów
Pyton_000
No dobra inaczej. Masz założyć UNIQUE na OBIE kolumny RAZEM a nie osobno.
yalus
jak założyć Unique na obydwie kolumny ?

jedyne co mam to tak:

  1. CREATE TABLE `tabela` (
  2. `id1` int(11) NOT NULL,
  3. `id2` int(11) NOT NULL
  4. UNIQUE KEY `id1` (`id1`),
  5. UNIQUE KEY `id2` (`id2`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8


chyba znalazłem;

  1. ALTER TABLE `tabela` ADD UNIQUE `unique_index`(`id1`, `id2`);


wielkie dzięki działa tak jak powinno
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.