PDA

Просмотр полной версии : sql запрос


artcraft
21.11.2005, 18:41
в базе есть таблица с двумя полями: A и B
оба поля в таблице не уникальные

+---+---+
| A | B |
+---+---+
| 0 | 0 |
| 0 | 1 |
| 1 | 0 |
+---+---+

нельзя допустиь появление двух записей с одинаковыми значениями в полях A и B одновременно - все ряды должны быть уникальными

например нельзя вставить | 0 | 0 | - такая запись уже есть

вопрос: как добиться такого результата делая только один запрос к базе?

спасибо

artcraft
21.11.2005, 23:36
ответ найден - уникальная пара полей:

CREATE TABLE `new` (
`a` INT( 10 ) NOT NULL ,
`b` INT( 10 ) NOT NULL ,
UNIQUE (`a` ,`b`)
) TYPE = MYISAM ;

ffffff
21.11.2005, 23:54
а потом лучае не уникальности будеть выдаватьсяч ошибка.

artcraft
22.11.2005, 00:03
А что, есть другие идеи?

Nirva
22.11.2005, 01:20
2ffffff прости, а уникальность достигнута не будет? или для тебя лучше, чтобы тебе вообще система сообщала результаты запроса?
любитель блин пхп4.

artcraft
22.11.2005, 02:53
а потом в случае неуникальности будеть выдаваться ошибка. нет не будет, если вставлять так:
INSERT IGNORE INTO `new` ( `a` , `b` ) VALUES ( 0, 1);

If you specify the keyword IGNORE in an INSERT with many value rows, any rows that duplicate an existing PRIMARY or UNIQUE key in the table are ignored and are not inserted. If you do not specify IGNORE, the insert is aborted if there is any row that duplicates an existing key value.RTFM!