|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.08.2013, 20:04 | #11 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
18.08.2013, 22:00 | #12 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
19.08.2013, 08:43 | #13 | ||
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
Цитата:
Цитата:
вся фишка в том что если тригер имеет вид Код:
Код:
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... Последний раз редактировалось Yurk@; 19.08.2013 в 08:46. |
||
20.08.2013, 17:41 | #14 |
Регистрация: 17.08.2013
Сообщений: 8
|
вот мой триггер:
AS begin if (NEW.indexid is NULL) then NEW.indexid = next value for gen_a_ftypes_id; end И при втором подряд "UPDATE or INSERT" выдаёт ошибку нарушения уникальности. А вот пример двух команд подряд: update or insert into a_ftypes(ftname, ftdescr, ft_id) values('DEFAULT', '', 12) matching(ft_id); update or insert into a_ftypes(ftname, ftdescr, ft_id) values('DEFAULT', '', 22) matching(ft_id); При этом обе должны выполнить INSERT, т.к. обоих записей ещё нет. Уникальное поле "ft_id". Но это не ключевое поле, а просто уникальное. Ключевое поле не упомянуто, его имя "indexid". Оно должно автоматически сгенерироваться триггером при INSERT-е. А при повторном выполнении будет уже UPDATE и это поле "indexid" просто и не меняется. И вот эта задача не работает. Выдаёт ощибку: 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 "PK_A_FTYPES" on table "A_FTYPES". При этом поле "indexid" - ключевое. Поле "ft_id"- просто уникальное, чисто идентифиактор целочисленный. Потому именно по "ft_id" идёт MATCHING в выражениях. Вот и вся ситуация. |
20.08.2013, 18:58 | #15 | |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
Цитата:
а на кой тогда генератор если ты вручную указываешь ft_id? и еще, покажи что у тебя за индекс PK_A_FTYPES ? на какие он поля и какие настройки уникальности?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
|
20.08.2013, 20:30 | #16 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Триггер на какое событие?
|
20.08.2013, 21:07 | #17 |
Регистрация: 17.08.2013
Сообщений: 8
|
праймари ключ PK_A_FTYPES на поле INDEXID. Триггер берёт из генератора именно для него значение. А поле FT_ID задаёт пользователь, но оно тоже уникально. Это поле содержит некое справочное значение, на которое код реагирует, когда загружает данные из таблицы. Имеется ввиду код софта.
|
20.08.2013, 21:50 | #18 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
ну он у тебя и ругается на INDEXID.
если есть фозможность - выложи файлик с БД. где-то у тебя косяк закрался
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
20.08.2013, 22:22 | #19 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Надыбал интересное обсуждение похожей проблемы
http://www.sql.ru/forum/893230/inser...te-ne-rabotaet
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
21.08.2013, 15:52 | #20 |
Регистрация: 17.08.2013
Сообщений: 8
|
АВАТАР, спасибо за статью. Очень похожая ситуация, действительно.
Либо данный операнд довольно хрупок в применении (и мне не удалось подобрать к нему "ключи"), либо он вообще недопилен в этой версии сервера. Не могу судить об этом однозначно. По крайней мере то, как я пытаюсь им пользоваться сугубо интуитивно и очевидно - не работает. Стоило бы обратиться к разработчикам Базы, т.к. в другом случае мы все подойдём к позиции "научного тыка" и большой потери времени. У меня проект через месяц должен быть запущен в первой версии, потому буду делать "медленное но верное" решение. Потом время покажет. Может быть и вправду даже при моей нагрузке тормазо меня не посетят (а точнее мой продукт и мою Базу). |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
UPDATE OR INSERT по нескольким таблицам в одной процедуре | Dozent | БД в Delphi | 1 | 21.02.2013 16:40 |
Invalid insert or update value(s): object columns are constrained | BarakudaX777 | БД в Delphi | 2 | 17.09.2012 08:28 |
UPDATE, INSERT, DELETE в DataGridView C# | Ramirag | Помощь студентам | 3 | 04.09.2011 13:24 |
выполнение запросов(Insert,Update) | Rio309 | C# (си шарп) | 1 | 20.03.2011 17:10 |
insert и update | Tanusha | SQL, базы данных | 4 | 13.03.2009 14:47 |