Уникальность по трем параметрам - MySQL
Формулировка задачи:
Создается временная таблица
Запись ведется так:
Как организовать таблицу, чтобы инкремент n происходил лишь в том случае, когда уникальным является сочетание трех других параметров?
$query = "CREATE TEMPORARY TABLE posetit_google
(
id INT (11) NOT NULL AUTO_INCREMENT,
url CHAR (250),
poisk_fras CHAR (200),
ist CHAR (200),
n INT (6) default '0',
PRIMARY KEY(id)
) COLLATE='utf8_general_ci'
ENGINE=InnoDB CHARACTER SET utf8";
mysql_query($query);
$query = "ALTER TABLE `posetit_google` ADD UNIQUE (url)";
mysql_query($query); mysql_query("INSERT INTO posetit_google (`url`, `poisk_fras`, `ist`, `n`)
VALUES ('$url', '$poisk_fras', '$ist', '1')
ON DUPLICATE KEY UPDATE `n` = (n + 1)");Решение задачи: «Уникальность по трем параметрам»
textual
Листинг программы
$query = "CREATE TEMPORARY TABLE posetit_google ( url CHAR (250), poisk_fras CHAR (200), ist CHAR (200), n INT (6) NOT NULL default '0', PRIMARY KEY(n, url, poisk_fras, ist) ) COLLATE='utf8_general_ci' ENGINE=InnoDB CHARACTER SET utf8"; mysql_query($query);
Объяснение кода листинга программы
Код создает временную таблицу posetit_google с четырьмя столбцами: url, poisk_fras, ist и n. Столбец n имеет тип данных INT(6) и не может быть пустым (NOT NULL). Столбец n также является первичным ключом таблицы, что означает, что каждое значение в этом столбце должно быть уникальным в сочетании с значениями в столбцах url, poisk_fras и ist.
Также в коде указывается, что таблица будет создана с использованием кодировки utf8_general_ci и движка InnoDB.
- $query = `CREATE TEMPORARY TABLE posetit_google
- (
- url CHAR(250),
- poisk_fras CHAR(200),
- ist CHAR(200),
- n INT(6) NOT NULL default '0',
- PRIMARY KEY(n, url, poisk_fras, ist)
- ) COLLATE='utf8_general_ci'
- ENGINE=InnoDB CHARACTER SET utf8`;
- mysql_query($query);