Главная страница
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.048 c
3-1147855104
deni
2006-05-17 12:38
2006.07.23
Как организовать filter по дате в ttable?


15-1150966255
Skyle
2006-06-22 12:50
2006.07.23
Требуется программист Delphi на постоянную работу (Новосибирск)


4-1144611125
Eksell
2006-04-09 23:32
2006.07.23
Визуальные эффекты в WinXP


3-1147859887
гога
2006-05-17 13:58
2006.07.23
Глюк с передачей параметра.


15-1151352183
Галинка
2006-06-27 00:03
2006.07.23
Кто знает его в лицо: HP HP Compaq t5710