powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
16 сообщений из 16, страница 1 из 1
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40042261
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть, есть меняю в инсерте какие-то значения, айди(оно естественно является первичным ключом) оставляю прежним.
Ожидается, по логике, ошибка нарушения констрейнта. Но вместо этого значения тех полей, которые я изменил, обновляются, т.е. INSERT отрабатывает как UPDATE.
Это вообще нормальное поведение? То есть, я могу не учитывать вообще, что мне нужно сделать - вставку или обновление?
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40042268
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene
Это вообще нормальное поведение?
Нет. Но такое возможно для view с instead of триггером.
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40042269
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene,

вставляете во вью?

......
stax
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40042427
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene
INSERT отрабатывает как UPDATE.
Это вообще нормальное поведение?

UPDATE OR INSERT есть в Firebird.
Но имхо такое поведение выглядит как пренебрежение к данным. Т.е. ты даже не знаешь, есть что-то такое или нет, "а давай ляпнем в базу".
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40042452
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
XEugene,

используйте merge вместо insert
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043163
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
XEugene,

вставляете во вью?

......
stax

Нет, в обычную таблицу, которую сам недавно создал. Не вью и никаких триггеров на ней нет.
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043165
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

XEugene наоборот хочет добится ошибки в случае dublicate key при инсерте


автор Ожидается , по логике, ошибка нарушения констрейнта. Но вместо этого
.....
stax
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043176
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene,

Продемонстрируйте ddl таблицы, оператор вставки и содержимое all_dependicies (зависимости от этой таблицы).
Код: plsql
1.
select * from all_dependencies where referenced_name = 'ИМЯ_ТАБЛИЦЫ';
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043180
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И совершенно наивный вопрос, а речь точно про oracle, а не mysql?
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043263
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
XEugene,

Продемонстрируйте ddl таблицы, оператор вставки и содержимое all_dependicies (зависимости от этой таблицы).
Код: plsql
1.
select * from all_dependencies where referenced_name = 'ИМЯ_ТАБЛИЦЫ';



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table WTF_STAFF_ATTRIBYTE
(
  id_staff  NUMBER not null,
  id_attr  NUMBER not null,
  value VARCHAR2(255)
);

alter table WTF_STAFF_ATTRIBYTE
	add constraint WTF_STAFF_FK foreign key (id_staff)
	references WTF_STAFF (id);

alter table WTF_STAFF_ATTRIBYTE
    add constraint WTF_ATTRIBYTE_FK foreign key (id_attr)
    references WTF_ATTRIBYTE (attrib_id);



Кстати, второй alter table так и не сработал, с ошибкой "ORA-00054: ресурс занят и задано его получение с параметром NOWAIT, либо истекло время ожидания". Но не думаю, что это имеет отношение к моему вопросу.

Вставка
Код: plsql
1.
INSERT INTO PSB2_STAFF_ATTRIBYTE (id_staff, id_attr, value) VALUES(1, 152, 'Ivanov')



Код: plsql
1.
select * from all_dependencies where referenced_name = 'WTF_STAFF_ATTRIBYTE';


не вернул ничего.
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043265
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene

Вставка
Код: plsql
1.
INSERT INTO PSB2_STAFF_ATTRIBYTE (id_staff, id_attr, value) VALUES(1, 152, 'Ivanov')





таблица WTF_STAFF_ATTRIBYTE, а вставляете в PSB2_STAFF_ATTRIBYTE?

.....
stax
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043272
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, понятно всё. Причина в том что PK в таблице не было.
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043540
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene
Ну, понятно всё. Причина в том что PK в таблице не было.
а как это объясняет поведение из стартового поста?
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40043568
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

У него еще delete, видимо, затерялся среди кода
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40047113
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
XEugene
Ну, понятно всё. Причина в том что PK в таблице не было.
а как это объясняет поведение из стартового поста?


Честно говоря, не знаю.
...
Рейтинг: 0 / 0
INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
    #40047150
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene
andreymx
пропущено...
а как это объясняет поведение из стартового поста?


Честно говоря, не знаю.
вполне возможно, что настоящую причину вы не нашли
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / INSERT с существующим id апдейтит запись, вместо того, чтобы выдавать ошибку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]