Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Составноей ЕК (первичный) и автоинкрементый СК (связи)   Найти похожие ветки 

 
Некто ©   (2006-05-19 13:26) [0]

Хотелось бы, чтобы уникальность записи проверялась на уровне связки "серия паспорта" и "номер паспорта", а связь с другими таблицами по автоинкрементному полю "id". Но вот такая ерунда.

#справочник владельцев
CREATE TABLE `owners` (
 `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT "Код владельца",
 `surname` varchar(50) COMMENT "Фамилия",
 `name` varchar(50) COMMENT "Имя",
 `patronymic_name` varchar(50) COMMENT "Отчество",
 `ser_pas` int(4) NOT NULL COMMENT "Серия паспорта",
 `num_pas` int(6) NOT NULL COMMENT "Номер паспорта",
 `address` varchar(150) COMMENT "Адрес",
 `phones` varchar(30) COMMENT "Телефоны",
 PRIMARY KEY(`ser_pas`, `num_pas`)
)
CHARACTER SET cp1251 ;

попытка выполнить этот скрипт завершается ошибкой
ERROR 1075 (42000) at line 2: Incorrect table definition; there can be only one auto column and it must be defined as a
key

Самое интересно, что Аксес это проглатывает. На других СУБД это не пробовал, так как под рукой только аксес и мускл.
Как обойти такое ограничение mysql? Пройдёт ли такой фокус в ib/fb?


 
Johnmen ©   (2006-05-19 13:29) [1]

Создать уникальный индекс на эти два поля.


 
Sergey13 ©   (2006-05-19 13:29) [2]

>ЕК...СК
Что за сокращения?

>а связь с другими таблицами по автоинкрементному полю "id".
Почему тогда
PRIMARY KEY(`ser_pas`, `num_pas`)
?


 
Johnmen ©   (2006-05-19 13:31) [3]


> Как обойти такое ограничение mysql?
> в ib/fb?


Это не ограничение, а базовая концепция.


 
Некто ©   (2006-05-19 13:35) [4]


> Johnmen ©   (19.05.06 13:29) [1]
>
> Создать уникальный индекс на эти два поля.

Супер! Я забыл про возможность UNIQUE INDEX `idx`(`ser_pas`, `num_pas`).
Псибки, наставили на путь истинный. :)


 
Некто ©   (2006-05-19 13:36) [5]


> Sergey13 ©   (19.05.06 13:29) [2]
>
> >ЕК...СК
> Что за сокращения?

Ну вы недавно насчёт естественных и суррогатных ключей с Игорем Шевченко спорили. ЕК и СК. :)


 
Sergey13 ©   (2006-05-19 13:39) [6]

2[5] Некто ©   (19.05.06 13:36)
А-а-а! 8-)


 
Desdechado ©   (2006-05-19 13:58) [7]

я бы сделал UNIQUE CONSTRAINT вместо UNIQUE INDEX
суть та же, но выглядит серьезнее :)


 
Johnmen ©   (2006-05-19 14:02) [8]


> Desdechado ©   (19.05.06 13:58) [7]


В MySQL это несколько иное и по-другому.


 
Desdechado ©   (2006-05-19 14:07) [9]

Johnmen ©   (19.05.06 14:02) [8]
отход от стандарта?


 
Johnmen ©   (2006-05-19 14:26) [10]


> Desdechado ©   (19.05.06 14:07) [9]


Я бы сказал, некоторая модификация...


 
Desdechado ©   (2006-05-19 15:29) [11]

да, по сабжу автору
PRIMARY KEY(ID) сделай
а то поле хоть и автоинкрементное, но ссылаться на него нельзя, если не поставишь PK


 
Johnmen ©   (2006-05-19 15:32) [12]


> Desdechado ©   (19.05.06 15:29) [11]
> а то поле хоть и автоинкрементное, но ссылаться на него
> нельзя, если не поставишь PK


Почему?


 
Desdechado ©   (2006-05-19 15:58) [13]

по стандарту - или PK, или UQ
на другие FK не сделать

или и здесь своя интерпретация?


 
Johnmen ©   (2006-05-19 16:04) [14]

Да не знаю я. Чисто теоретически помех нету.
Если отсутствие ПК приводит к ошибке создания ссылочного констрейнта, то это фича конкретного сервера...


 
Некто_   (2006-05-19 16:53) [15]

ID будет AUTO_INCREMENT, ну значит уникальным.... можно наверно до кучи объявить его как UNIQUE INDEX, хотя смысла этого не вижу, разве что индекс создаётся, но по этому полю он нужен как собаке пятая нога.


 
Desdechado ©   (2006-05-19 16:57) [16]

> по этому полю он нужен как собаке пятая нога
а поле тогда зачем?
обычно PK (ID) создается для связи с другими таблицами, а по индексу это в разы быстрее
если у тебя связывать не с чем, на кой тогда ID ?


 
Некто_   (2006-05-19 17:15) [17]

Ой. Именно в этой таблице нужен. Просто когда писал 15 пост, то думал о другой заморочке. Сорри. =)



Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
2-1152030910
J_SABER
2006-07-04 20:35
2006.07.23
доступ к файлам в запароленном архиве


15-1150971029
Rentgen
2006-06-22 14:10
2006.07.23
Компонент-печать-мм


2-1151256162
Юнкер
2006-06-25 21:22
2006.07.23
try except как способ выбора


15-1151047805
Desdechado
2006-06-23 11:30
2006.07.23
Работает ли поиск по конференциям?


2-1151845021
Gizza
2006-07-02 16:57
2006.07.23
Приоритет программы