powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление записи с полем Primary Key
17 сообщений из 17, страница 1 из 1
Удаление записи с полем Primary Key
    #39741043
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, на MSSQL недавно, возникла ламерская незадача, пробую удалить запись в таблице A c PK и она удаляется благополучно при живом FK, который создан в таблице B и ссылается на удаленную запись с PK.

При этом FK стал равен null. Как сделать чтобы нельзя было удалить PK, на который ссылается FK.
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741053
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,
автор"и она удаляется благополучно при живом" "При этом FK стал равен null."
не такого поведения "по умолчанию".
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741055
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetКак сделать чтобы нельзя было удалить PK, на который ссылается FK.Пересоздать FK без каскадных операций.
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741057
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmwsnetКак сделать чтобы нельзя было удалить PK, на который ссылается FK.Пересоздать FK без каскадных операций.
я честно не пользуюсь, но какая из каскадных оперраций замиент на NULL при удалении?
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741071
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKinvmпропущено...
Пересоздать FK без каскадных операций.
я честно не пользуюсь, но какая из каскадных оперраций замиент на NULL при удалении?

There are four available options in SQL Server 2005 and later versions (SQL Server 2016 as of today) as follows:

No Action
Cascade
SET NULL
SET Default
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741074
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtTaPaKпропущено...

я честно не пользуюсь, но какая из каскадных оперраций замиент на NULL при удалении?

There are four available options in SQL Server 2005 and later versions (SQL Server 2016 as of today) as follows:

No Action
Cascade
SET NULL
SET Default
о, день прошёл не зря :)
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741075
wadegwadeg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKinvmпропущено...
Пересоздать FK без каскадных операций.
я честно не пользуюсь, но какая из каскадных оперраций замиент на NULL при удалении?
Сильно.
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/alter-table-table-constraint-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741191
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmwsnetКак сделать чтобы нельзя было удалить PK, на который ссылается FK.Пересоздать FK без каскадных операций.

Таки при создании FK на каскадные операции было no action.
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741220
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробывал пересоздать FK итог все тот же - можем удалить запись с PK. Где еще посмотреть?
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741225
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetПопробывал пересоздать FK итог все тот же - можем удалить запись с PK. Где еще посмотреть?Триггер на удаление в А, который "зануллает" удаляемые записи в B
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741226
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtwsnetПопробывал пересоздать FK итог все тот же - можем удалить запись с PK. Где еще посмотреть?Триггер на удаление в А, который "зануллает" удаляемые записи в BINSTEAD OF , походу ...
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741227
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

уверены что правильно пересоздали? посмотрите результат запроса:
Код: sql
1.
select delete_referential_action_desc, name from sys.foreign_keys where parent_object_id = object_id('имя вашей таблицы на которой висит FK', 'U')
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741244
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ffwsnet,

уверены что правильно пересоздали? посмотрите результат запроса:
Код: sql
1.
select delete_referential_action_desc, name from sys.foreign_keys where parent_object_id = object_id('имя вашей таблицы на которой висит FK', 'U')



Ответ:
Код: sql
1.
NO_ACTION	FK_inspection_plan_s_object
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741248
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtcourtпропущено...
Триггер на удаление в А, который "зануллает" удаляемые записи в BINSTEAD OF , походу ...

Да откуда там триггеру взяться, таблицы недавно созданы, нет - триггеров на них не висит.
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741265
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небось, удаляется запись, на которую никто не ссылается?
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741269
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap, если бы было так. Запись удаляется, для которой есть данные в другой таблице.
...
Рейтинг: 0 / 0
Удаление записи с полем Primary Key
    #39741313
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

хм, странно такого быть не должно если вы реально по факту все правильно сделали:
пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
drop table if exists dbo.t2;
drop table if exists dbo.t1;
go

create table dbo.t1 (id int primary key);
go
create table dbo.t2 (pk_id int, val varchar(255), constraint fk foreign key (pk_id) references dbo.t1(id) on delete set null)
go
insert into dbo.t1 values (1), (2) ,(3)
go
insert into dbo.t2 values (1, 'TEST'), (1, 'TEST'), (2, 'TEST2'), (3, 'TEST3')
go
begin try
insert into dbo.t2 values (4, 'TEST')
end try
begin catch
select error_number(), error_message()
end catch
go
select delete_referential_action_desc, * from sys.foreign_keys where parent_object_id = object_id('dbo.t2') --SET_NULL
go

begin tran
delete from dbo.t1 where id = 3
select * from dbo.t2 --запись с pk_id=3 стала NULL
rollback;
go

--пересоздаем fk
alter table dbo.t2 
drop constraint fk
go

alter table dbo.t2 
add constraint fk foreign key (pk_id) references dbo.t1(id)
go
select delete_referential_action_desc, * from sys.foreign_keys where parent_object_id = object_id('dbo.t2') --NO_ACTION
go
--//пересоздаем fk

begin tran
begin try
delete from dbo.t1 where id = 3
end try
begin catch
select error_number(), error_message()
select * from dbo.t2 --запись с pk_id=3 осталась нетронутой
end catch
rollback;
go

drop table if exists dbo.t2;
drop table if exists dbo.t1;
go


...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление записи с полем Primary Key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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