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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2014, 13:27   #1
Aleks_006
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 23
По умолчанию В чём проблема? Ввод данных, Interbase

Тестирую самый обычный запрос
Код:
INSERT INTO tovar(id_knigi,nazvanie_knigi,cena_knigi,kolichestvo) VALUES (9,'kolobok',50,4)
Почему-то сначала он работает, но после вбивания чего-нибудь в таблицу Продажа - ни в какую. Вылетает вот такое:
Violation of FOREIGN KEY constraint "INTEG_18" on table "PRODAZHA"
Это обычный внешний ключ на id_knigi (один-ко-многим), в продаже он второстепенный, значения не повторял. Не могу врубиться, в чём ошибка.
(В продажу я вбивал, скажем, id=7 и нужное количество, и триггер "продавал" это количество книг вплоть до нуля, отнимая из Товара)
Aleks_006 вне форума Ответить с цитированием
Старый 25.10.2014, 13:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то я не понимаю откуда 9 в запросе?
Это вычисления какие-то или вбито по наитию?
И ты вообще понимаешь что такое "внешний ключ"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2014, 14:08   #3
Aleks_006
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то я не понимаю откуда 9 в запросе?
Это вбито от балды. Ну, вернее, уже 8 записей там было, соответственно дальше 9.
Aleks_006 вне форума Ответить с цитированием
Старый 25.10.2014, 15:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
соответственно дальше 9.
Ух )))
Вот от балды и получил по балде )))
Давай заканчивай с этой несуразицей. Такие вещи как ключи нужно не вводить от балды а высчитывать. Запросом, генераторами, триггерами... Опять таки если это внешний ключ, то убедись, что в главной таблице такое значение связанного ключа есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2014, 15:28   #5
Aleks_006
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ух )))
Вот от балды и получил по балде )))
Давай заканчивай с этой несуразицей. Такие вещи как ключи нужно не вводить от балды а высчитывать. Запросом, генераторами, триггерами... Опять таки если это внешний ключ, то убедись, что в главной таблице такое значение связанного ключа есть.
Нигде не прописано, что первичный ключ обязательно должен быть счётчиком! Я пока тестирую с int'ом, по-моему, вполне нормальный тип для ключа. Ну ладно, сейчас сделаю генератор.
Aleks_006 вне форума Ответить с цитированием
Старый 25.10.2014, 15:37   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Aleks_006 Посмотреть сообщение
Нигде не прописано, что первичный ключ обязательно должен быть счётчиком! Я пока тестирую с int'ом, по-моему, вполне нормальный тип для ключа. Ну ладно, сейчас сделаю генератор.
Нормальный, кто против. Но и за уникальность его сам отвечаешь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2014, 15:54   #7
Aleks_006
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 23
По умолчанию

хм... Вообще, заработало без ошибок. Надо же
И в качестве совета: что считается удобнее и лучше в моём случае, пользоваться id'шниками как уникальными номерами книг (тогда записи нельзя удалять, можно только понижать поле "количество" до нуля) или создать ещё одно int-поле для идентификатора книги (тогда счётчик вообще в задаче не задействован, и записи можно как-нибудь сносить)?
Aleks_006 вне форума Ответить с цитированием
Старый 25.10.2014, 18:10   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нигде не прописано, что первичный ключ обязательно должен быть счётчиком!
Это просто предложение избавить себя от геморроя.
Цитата:
или создать ещё одно int-поле для идентификатора книги
ИМХО это лишнее будет.
А вообще покажи структуру базы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём проблема? serega96 Общие вопросы C/C++ 23 29.09.2013 22:21
DirectShow: в чём проблема? Hell Knight Общие вопросы C/C++ 1 13.10.2012 08:15
В чём проблема? Blind Guard Общие вопросы C/C++ 2 28.05.2012 12:50
В чём проблема?(( Van-89 Паскаль, Turbo Pascal, PascalABC.NET 5 12.12.2011 13:02
в чём проблема? zetr0 Помощь студентам 7 04.10.2010 20:02