Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Metoda na nie dodawanie takich samych rekordów do tabeli
yalus
post 2.02.2015, 22:19:11
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
Pyton_000
post 2.02.2015, 23:57:08
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


INSERT IGNORE INTO
To zadziała jeżeli PrimaryKey lub unique ma konflikt

Ten post edytował Pyton_000 2.02.2015, 23:58:10
Go to the top of the page
+Quote Post
yalus
post 3.02.2015, 10:01:28
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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



--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
Pyton_000
post 3.02.2015, 10:03:05
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No to właśnie do tego celu stosuje się UNIQUE i po problemie
Go to the top of the page
+Quote Post
yalus
post 3.02.2015, 10:39:15
Post #5





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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

Ten post edytował yalus 3.02.2015, 10:43:07


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
Pyton_000
post 3.02.2015, 10:59:04
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No dobra inaczej. Masz założyć UNIQUE na OBIE kolumny RAZEM a nie osobno.
Go to the top of the page
+Quote Post
yalus
post 3.02.2015, 11:21:53
Post #7





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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

Ten post edytował yalus 3.02.2015, 11:19:28


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 20:03