Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2013, 21:17   #1
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию ошибка при создании ключа

У меня при создании внешнего ключа возникает проблема и выдает сообщение об ошибке. как это исправить
есть две таблицы
Код SQL

CREATE TABLE STAFF
(ID INTEGER NOT NULL PRIMARY KEY,
lastName VARCHAR (30) NOT NULL,
...
PosID SMALLINT NOT NULL,


CREATE TABLE POSS
(POSID INTEGER NOT NULL PRIMARY KEY,
...
Мне нужно создать такой внешний ключ
Код SQL
ALTER TABLE STAFF
ADD FOREIGN KEY (PosID) REFERENCES POSS
Изображения
Тип файла: png Image 1.png (6.6 Кб, 109 просмотров)
Вложения
Тип файла: rar Персонал и база данных Staff (81).rar (500.7 Кб, 7 просмотров)
aleksskay вне форума Ответить с цитированием
Старый 21.12.2013, 15:18   #2
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию

никто ничего не знает насчет этого?
aleksskay вне форума Ответить с цитированием
Старый 21.12.2013, 15:28   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

PosID SMALLINT NOT NULL,
и
POSID INTEGER NOT NULL PRIMARY KEY
о чем-то говорит?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.12.2013, 15:59   #4
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию говорить

и о чем это говорить я сделал и таким образом когда они оба были smallint?
aleksskay вне форума Ответить с цитированием
Старый 21.12.2013, 18:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
я сделал и таким образом когда они оба были smallint
Посмотри что это за тип INTGR_19. Думаю тебе не smallint нужно было указывать а INTEGER везде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.12.2013, 18:31   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

INTGR_19 это имя CONSTRAINT, который создать не может из-за разных типов внешнего ключа таблицы staff и первичного ключа таблицы poss.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.12.2013, 18:34   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тюху ты...
Я подумал что это тип какой-то. Невнимательность моя...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.12.2013, 18:49   #8
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию

так что мне делать ?
aleksskay вне форума Ответить с цитированием
Старый 21.12.2013, 21:07   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И что, мыслей нет? Если типы ключей не совпадают, значит есть два варианта: либо сделать ключи одного типа и создать внешний ключ, либо вообще не делать его.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.12.2013, 02:18   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от aleksskay Посмотреть сообщение
так что мне делать ?
1. Читать книга и тренировать
2. Слушать людей внимательно! который тебя говорят что и как надо


Я думаю что структура должен у вас так

/* ---------------------------------------------- */

А.
Код:
CREATE TABLE STAFF
(ID INT identity(1,1) PRIMARY KEY, 
 lastName VARCHAR (30) NOT NULL
 )
Б.
Код:
 CREATE TABLE POSS
( POSID INT NOT NULL PRIMARY KEY,
  POSNAME varchar(30),
  STafID int NOT NULL
 )
Г.
Код:
ALTER TABLE POSS
ADD FOREIGN KEY (STafID)
REFERENCES STAFF(ID) ON DELETE CASCADE
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при создании таблицы ElectronJournal БД в Delphi 3 29.04.2013 20:01
Ошибка при создании COM сервера reggga C++ Builder 0 13.02.2012 18:22
Ошибка при создании БД alt5000 PHP 12 26.11.2011 18:46
Ошибка при создании DLL drknn Общие вопросы Delphi 5 30.04.2010 11:02