|
|
|
| Есть текстовые поля name, surname и pass_code
Нужно, чтобы в базе не было одинаковых сочитаний этих полей.
Одинаковые name, могут быть, surname и pass_code тоже.
Но двух записей с идентичными значениями всех трех полей быть не должно.
Если в базе есть
Ivan Ivanov 22,
то второго Ivan Ivanov 22, быть не должно, хотя может быть Ivan Ivanov 23, Pert Ivanmov 22 и т.д.
Как такое сделать? Заранее спасибо за ответ. | |
|
|
|
|
|
|
|
для: Temnovit
(07.06.2007 в 11:52)
| | назначить на эти три поля объединенный уникальный индекс.
ALTER TABLE `tab`
ADD UNIQUE `fullname`
(
`name` ( 10 ) ,
`surrname` ( 10 ) ,
`pass_code` ( 10 )
)
;
|
Здесь индекс fullname построен по первым десяти символам всех трех полей.
Если поля имеют другие длины - нужно скорректировать оператор. | |
|
|
|
|
|
|
|
для: Trianon
(07.06.2007 в 12:08)
| | А если включать туда числовые поля? | |
|
|
|
|
|
|
|
для: Temnovit
(07.06.2007 в 13:38)
| | индекс, насколько я понимаю, все равно строится по их текстовому представлению. Десяти символов достаточно для UNSIGNED. Одинадцати - для INT.
Впрочем, если INT - autoincrement, то доводить его до переброса знака я бы не советовал. | |
|
|
|