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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 17:08   #1
Etlau
Пользователь
 
Аватар для Etlau
 
Регистрация: 30.03.2008
Сообщений: 23
По умолчанию Insert into в InterBase

Здравствуйте.
Есть создана таблица:

Код:
CREATE TABLE Operation(
ID_operation integer not null,
name_operation varchar(30) not null,
ID_material integer not null,
Min_amount numeric(4,3) not null,
primary keyID_operation, ID_material))
Пытаюсь ввести данные:

Код:
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 1, 0.13);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 2, 0.15);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 3, 0.20);
Выдает ошибку:

Код:
Invalid insert or update value(s): object columns are
constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "UNQ_OPERATION" on table "OPERATION".
Я не знаю изза чего она. Помогите разобраться.
В сущности, самое распространенное бегство всякого человека - бегство от самого себя.
Etlau вне форума Ответить с цитированием
Старый 27.12.2009, 17:23   #2
Etlau
Пользователь
 
Аватар для Etlau
 
Регистрация: 30.03.2008
Сообщений: 23
По умолчанию

Все понял, поле ID_operation - Unique...
В сущности, самое распространенное бегство всякого человека - бегство от самого себя.
Etlau вне форума Ответить с цитированием
Старый 27.12.2009, 17:26   #3
WinApi
Пользователь
 
Регистрация: 07.11.2008
Сообщений: 13
По умолчанию

поле ID_operation является первичным ключом, первичные ключи должны быть уникальны.

nsert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 1, 0.13);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 2, 0.15);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 3, 0.20);

Во всех трёх запросах у вас ID_operation = 1

попробуйте:

nsert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (1, 'Операция1', 1, 0.13);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (2, 'Операция1', 2, 0.15);
insert into Operation(ID_operation, name_operation, ID_material, Min_amount)
values (3, 'Операция1', 3, 0.20);
WinApi вне форума Ответить с цитированием
Старый 27.12.2009, 17:28   #4
Etlau
Пользователь
 
Аватар для Etlau
 
Регистрация: 30.03.2008
Сообщений: 23
По умолчанию

primary key(ID_operation, ID_material) - сложений первичный ключ. Тоесть главное, чтобы не было повторов типа - "1,1" и "1,1".

Нужно было чтобы я мог присвоить каждой операции разные материалы:

Операция1, материал1, 15 штук
Операция1, материал2, 20 штук
Операция1, материал3, 10 штук
Операция1, материал4, 17 штук

И в тоже время связать эту таблицу 1 с таблицей2, которая будет ссылатся на даную по полю - ID_operation.
ПРобывал связывать, но IB требует чтобы ID_operation было уникально.
В сущности, самое распространенное бегство всякого человека - бегство от самого себя.

Последний раз редактировалось Etlau; 27.12.2009 в 17:33.
Etlau вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция INSERT() fygas1991 PHP 2 27.12.2009 22:52
insert into по условию natishka SQL, базы данных 0 25.11.2009 19:55
INSERT c OUTPUT Veroonya SQL, базы данных 3 23.09.2009 11:38
Insert - ? Evgenii БД в Delphi 2 06.07.2009 02:24
insert и update Tanusha SQL, базы данных 4 13.03.2009 14:47