A masz zdefiniowane ograniczenie na unikalność pól userid + nazwa + kolor + rozmiar ?
Pewno nie, więc nie wystąpi zdarzenie zduplikowanego klucza.
[code]
mysql> create table koszyk(
-> id int primary key auto_increment,
-> user_id int,
-> nazwa varchar(50),
-> kolor varchar(50),
-> rozmiar varchar(50),
-> ilosc int default 1
-> );
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO koszyk (user_id, nazwa, kolor, rozmiar) VALUES('1', 'piłka', 'biały', '40cm');
Query OK, 1 row affected (0.07 sec)
mysql> INSERT INTO koszyk (user_id, nazwa, kolor, rozmiar) VALUES('1', 'piłka', 'biały', '40cm');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM koszyk;
+----+---------+--------+--------+---------+-------+
| id | user_id | nazwa | kolor | rozmiar | ilosc |
+----+---------+--------+--------+---------+-------+
| 1 | 1 | piłka | biały | 40cm | 1 |
| 2 | 1 | piłka | biały | 40cm | 1 |
+----+---------+--------+--------+---------+-------+
2 rows in set (0.00 sec)
mysql> truncate table koszyk;
Query OK, 0 rows affected (0.07 sec)
mysql> alter table koszyk
-> add constraint unique( user_id, nazwa, kolor, rozmiar );
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> INSERT INTO koszyk (user_id, nazwa, kolor, rozmiar) VALUES('1', 'piłka', 'biały', '40cm');
Query OK, 1 row affected (0.06 sec)
mysql> INSERT INTO koszyk (user_id, nazwa, kolor, rozmiar) VALUES('1', 'piłka', 'biały', '40cm');
ERROR 1062 (23000): Duplicate entry '1-piłka-biały-40cm' for key 'user_id'
mysql> select * from koszyk;
+----+---------+--------+--------+---------+-------+
| id | user_id | nazwa | kolor | rozmiar | ilosc |
+----+---------+--------+--------+---------+-------+
| 1 | 1 | piłka | biały | 40cm | 1 |
+----+---------+--------+--------+---------+-------+
1 row in set (0.00 sec)
mysql> INSERT INTO koszyk (user_id, nazwa, kolor, rozmiar) VALUES('1', 'piłka', 'biały', '40cm')
-> ON DUPLICATE KEY UPDATE ilosc = ilosc + 1;
Query OK, 2 rows affected (0.09 sec)
mysql> select * from koszyk;
+----+---------+--------+--------+---------+-------+
| id | user_id | nazwa | kolor | rozmiar | ilosc |
+----+---------+--------+--------+---------+-------+
| 1 | 1 | piłka | biały | 40cm | 2 |
+----+---------+--------+--------+---------+-------+
1 row in set (0.00 sec)
[/code]