· 8 years ago · Jul 09, 2018, 03:50 PM
1CREATE TABLE IF NOT EXISTS `users_settings_temp` (
2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3 `userid` int(10) unsigned DEFAULT NULL,
4 `type` enum('type1','type2')
5 `data` text,
6 `date_created` int(11) DEFAULT NULL,
7 PRIMARY KEY (`id`)
8) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
9
10INSERT INTO users_settings_temp(...)
11ON DUPLICATE KEY UPDATE data = '{$data}'
12
13INSERT INTO ... ON DUPLICATE KEY UPDATE
14
15CREATE TABLE IF NOT EXISTS `users_settings_temp` (
16 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
17 `userid` int(10) unsigned DEFAULT NULL,
18 `type` enum('type1','type2'),
19 `data` text,
20 `date_created` int(11) DEFAULT NULL,
21 PRIMARY KEY (`id`, `type`)
22) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
23
24mysql> INSERT INTO users_settings_temp VALUES (1, 2, 'type1', 'keks', 5);
25Query OK, 1 row affected (0.00 sec)
26
27mysql> INSERT INTO users_settings_temp VALUES (1, 2, 'type2', 'keks', 5);
28Query OK, 1 row affected (0.00 sec)
29
30mysql> INSERT INTO users_settings_temp VALUES (1, 2, 'type2', 'keks', 5);
31ERROR 1062 (23000): Duplicate entry '1-type2' for key 'PRIMARY'
32
33mysql> INSERT INTO users_settings_temp VALUES (NULL, 2, 'type2', 'keks', 5);
34Query OK, 1 row affected (0.00 sec)
35
36mysql> INSERT INTO users_settings_temp VALUES (NULL, 2, 'type1', 'keks', 5);
37Query OK, 1 row affected (0.00 sec)
38
39mysql> SELECT * FROM users_settings_temp;
40+----+--------+-------+------+--------------+
41| id | userid | type | data | date_created |
42+----+--------+-------+------+--------------+
43| 1 | 2 | type1 | keks | 5 |
44| 1 | 2 | type2 | keks | 5 |
45| 2 | 2 | type2 | keks | 5 |
46| 3 | 2 | type1 | keks | 5 |
47+----+--------+-------+------+--------------+
484 rows in set (0.00 sec)