Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
У меня есть следующий код
BEGIN TRY
        BEGIN TRANSACTION ExportData
        ...
        DELETE FROM Table1
        DELETE FROM Table2
        COMMIT TRANSACTION ExportData
END TRY
BEGIN CATCH 
	
		DECLARE @errorMessage NVARCHAR(2048);

		IF @@TRANCOUNT > 0
		BEGIN
			ROLLBACK TRANSACTION ExportData
		END
			
END CATCH

В таблице Table1 есть форейнкей на таблицу Table2, поэтому я сначала удаляю записи оттуда, а потом уже из таблицы T2. Все несколько раз перепроверил, удаляются именно те записи с ссылкой, который потом также будут удаляться из Table2. Но все равно при выполнении я получаю ошибку когда удаляю записи из Table2:
Конфликт инструкции DELETE с ограничением REFERENCE....
20 окт 11, 14:15    [11472696]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
select @@version увидеть можно?
20 окт 11, 14:21    [11472740]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
OracleLover,

Сообщение об ошибке увидеть можно?
20 окт 11, 14:25    [11472762]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
tpg,

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

iap
автор
Конфликт инструкции DELETE с ограничением REFERENCE "FK_TTable1_TTable12".
Конфликт произошел в базе данных "TestBase", таблица "dbo.TTable1", column 'Field1'.
20 окт 11, 14:29    [11472790]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
OracleLover
iap
автор
Конфликт инструкции DELETE с ограничением REFERENCE "FK_TTable1_TTable12".
Конфликт произошел в базе данных "TestBase", таблица "dbo.TTable1", column 'Field1'.
Означает ли это, что в какой-то таблице Table12 есть FK, ссылающийся на Table1?
20 окт 11, 14:31    [11472807]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
OracleLover,

напишите ту CREATE TABLE таблиц со всеми констрейнтами (включая FK).
Сразу всё станет ясно.
20 окт 11, 14:33    [11472817]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Обновится б не мешало. SP1 уже три месяца как вышел и CU3 к нему на днях...
20 окт 11, 14:34    [11472821]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
iap
OracleLover
iap
пропущено...
Означает ли это, что в какой-то таблице Table12 есть FK, ссылающийся на Table1?


Нет, фк висит только на Table1, на Table2(Table2 а не Table12, описался) вообще ничего не висит
20 окт 11, 14:37    [11472843]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
OracleLover
iap
пропущено...
Означает ли это, что в какой-то таблице Table12 есть FK, ссылающийся на Table1?


Нет, фк висит только на Table1, на Table2(Table2 а не Table12, описался) вообще ничего не висит
То есть, FOREIGN KEY описан в какой таблице?
Термин "висит" трудно однозначно интерпретировать.
Надо бы скрипты выложить. Трудно что ли?
20 окт 11, 14:44    [11472904]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
iap,

USE [TestBase]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[TTable1](
	поля,
 CONSTRAINT [PK_TTable1] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[TTable1]  WITH CHECK ADD  CONSTRAINT [FK_TTable1_TTable2] FOREIGN KEY([Field1])
REFERENCES [dbo].[TTable2] ([Field1])
GO

ALTER TABLE [dbo].[TTable1] CHECK CONSTRAINT [FK_TTable1_TTable2]
GO

CREATE TABLE [dbo].[TTable2](
	поля,
 CONSTRAINT [PK_TTable2] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
20 окт 11, 14:50    [11472946]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
автор
ограничением REFERENCE "FK_TTable1_TTable12

А это то где ограничение ?
20 окт 11, 15:04    [11473076]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
Ken@t
автор
ограничением REFERENCE "FK_TTable1_TTable2

А это то где ограничение ?


поправел. В таблице Table1
20 окт 11, 15:12    [11473181]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
OracleLover
iap,

USE [TestBase]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[TTable1](
	поля,
 CONSTRAINT [PK_TTable1] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[TTable1]  WITH CHECK ADD  CONSTRAINT [FK_TTable1_TTable2] FOREIGN KEY([Field1])
REFERENCES [dbo].[TTable2] ([Field1])
GO

ALTER TABLE [dbo].[TTable1] CHECK CONSTRAINT [FK_TTable1_TTable2]
GO

CREATE TABLE [dbo].[TTable2](
	поля,
 CONSTRAINT [PK_TTable2] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


Прямо ахринительно , типа самому добавить по вкусу и данные добавить ? И нахера нам эта трудотерпия.
20 окт 11, 15:25    [11473307]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
удаляются именно те записи с ссылкой


Как проверяли?
20 окт 11, 15:57    [11473651]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
pkarklin
автор
удаляются именно те записи с ссылкой


Как проверяли?


кидал во временную таблицу.
20 окт 11, 16:17    [11473805]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
pkarklin
автор
удаляются именно те записи с ссылкой


Как проверяли?
Он же вроде все записи удаляет из таблиц? (См. стартовый пост)
Вроде и проверять-то нечего.
20 окт 11, 16:27    [11473884]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
iap,

А это как рассценивать?

OracleLover
Все несколько раз перепроверил, удаляются именно те записи с ссылкой, который потом также будут удаляться из Table2.


Если все, то что тогда проверять?
20 окт 11, 16:45    [11474028]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
OracleLover
Member

Откуда: Россия, Казань
Сообщений: 20899
pkarklin
iap,

А это как рассценивать?

OracleLover
Все несколько раз перепроверил, удаляются именно те записи с ссылкой, который потом также будут удаляться из Table2.


Если все, то что тогда проверять?


Дык транзакция-то всегда откатывалась по ошибке ;)
20 окт 11, 17:00    [11474209]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
pkarklin
iap,

А это как рассценивать?

OracleLover
Все несколько раз перепроверил, удаляются именно те записи с ссылкой, который потом также будут удаляться из Table2.


Если все, то что тогда проверять?
Я ж и говорю - не понимаю, что проверять.
Правда, имена таблиц в первом посте ненастоящие оказались.
Может, и DELETE ненастоящий!
OracleLover, вот почему бы сразу не написать всё как есть?
20 окт 11, 17:04    [11474245]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка удаления записи  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8880
типо да,...
создаём TTable1 , а у даляем из Table1


Они жили на Киевской а пегеехали на Киевскую... (с) "По семейным обстоятельствам" (кажеца, непомнюя)
20 окт 11, 22:41    [11475729]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить