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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2012, 08:10   #1
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
Печаль Invalid insert or update value(s): object columns are constrained

Возникла проблема с выполнением запроса на вставку.
Код:
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 "INTEG_79" on table "PENI".
Имеется справочник договоров(DOGOVOR) и таблица в которой хранится ставка рефинансирования(PENI), необходимо в таблицу Peny вставить все договора, дату ставки и саму ставку.
Структура таблицы пени элементарна. Два ключевых поля №договора и дата.
Делаю в IBExpert. Код процедуры приведу ниже:

Код:
Код:
begin
v_start = 1;
v_end =29598;
  for select
    distinct dog_no from dogovor d
    where d.arxiv <> 'Y' and d.tmp_int between :v_start and :v_end
    into :dn
  do begin
    DELETE from peni where dog_no = :dn and data = '14.09.2012';
    insert into peni(dog_no, data, peni) values(:dn, '14.09.2012', 0.02750);
  end
end
Непойму вообще почему она возникает, ведь мы удаляем с таблицы записи если они уже были внесены и вносим их снова!
Или пробовал проверять и вставлять только если нет такой записи, та же ошибка. В чем может быть проблема?

Код:
begin
v_start = 1;
v_end =29598;
  for select
    distinct dog_no from dogovor d
    where d.arxiv <> 'Y' and d.tmp_int between :v_start and :v_end
    into :dn
  do begin
    select count(*) from peni where dog_no = :dn and data = '14.09.2012'  into :countz;
    if (countz < 1) then
     begin
     insert into peni
       (dog_no, data, peni)
     values
       (:dn, '14.09.2012', 0.02750);
     end
  end
end
BarakudaX777 вне форума Ответить с цитированием
Старый 17.09.2012, 08:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Непойму вообще
А ты попробуй убери вставку, и после отработки процедуры посмотри так ли все хорошо удаляется
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2012, 08:28   #3
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

constraint "INTEG_79"
Составной первичный ключ dog_no,Data

Пробую щас без удаления а чисто со вставкой полей, которых в базе нет. если заремировать код на вставку и поставить счетчик, то пишет что в условие вошло 8054 записи договоров

Я вот никак не пойму как может происходить дублирование ключа, если я явно проверяю есть ли он в базе и если его нет то вставляю:

Код:
 select count(*) from peni where dog_no = :dn and data = '14.09.2012'  into :countz;
    if (countz < 1) then
эта процедурка для программы Барс, нужно все договора перелопатить и изменить для них ставку рефинансирования. логически вроде все правильно а вот в чем проблема то!
Сейчас вместо параметров попробую явно указывать на номер договора какого нибудь.
А кстати как можно в IBExpert отлаживать, чтобы видеть какие договора попали в выборку? хотябы на каком именно договоре ошибка возникла

Хотел проследить на каком договоре ошибка, использовал так
Код:
        WHEN ANY DO BEGIN
	   errdn=:dn;
	END
Показался номер договора где ошибка, и не остановилось как в случае без обработчика ошибок а пошло дальше и все успешно добавилось. может кому понадобится, можете попробовать

Последний раз редактировалось Stilet; 17.09.2012 в 10:44.
BarakudaX777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UPDATE, INSERT, DELETE в DataGridView C# Ramirag Помощь студентам 3 04.09.2011 13:24
выполнение запросов(Insert,Update) Rio309 C# (си шарп) 1 20.03.2011 17:10
Violation of primary key constraint .Cannot insert duplicate key in object Как избавиться? SlimFIT БД в Delphi 4 28.12.2010 06:46
Запрос UPDATE&INSERT&DELETE l0nley SQL, базы данных 5 17.07.2009 05:59
insert и update Tanusha SQL, базы данных 4 13.03.2009 14:47