Главная страница
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.033 c
15-1150696372
ANB
2006-06-19 09:52
2006.07.23
Посоветуйте библиотеку для работы с почтой


15-1150967605
grisme
2006-06-22 13:13
2006.07.23
Ряд Макларена


3-1148130330
wirg
2006-05-20 17:05
2006.07.23
Что быстрее выполняется


2-1151342750
Gizza
2006-06-26 21:25
2006.07.23
Свернуть все окна


2-1151931049
Elfebet
2006-07-03 16:50
2006.07.23
Как узнать момент выключения компьютера?