Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Некто ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
1-1149766405
oleggar
2006-06-08 15:33
2006.07.23
расширенный DBgrid


2-1151772908
Gizza
2006-07-01 20:55
2006.07.23
свои кнопки в messagedlg


2-1151117256
learner
2006-06-24 06:47
2006.07.23
Сообщение в нить, созданной CreateThread


2-1151996706
Wahnsinng
2006-07-04 11:05
2006.07.23
Язык ввода


15-1150772854
sff
2006-06-20 07:07
2006.07.23
Цена ТР





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский