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

Откуда:
Сообщений: 1066
CREATE TRIGGER TDeleteDublicate ON [dbo].[cmd_sync] 
FOR INSERT 
AS
	delete t2 from (
	select tid, min(id) id, mid, aid from inserted 
	where aid = 0 group by tid, mid, aid
			) t1 inner join cmd_sync t2 on t1.tid = t2.tid and t1.mid = t2.mid and t1.aid = t2.aid and t1.id < t2.id


не работает...((, хотя если выполнять запрос руками и заменить inserted на cmd_sync то все отлично отрабатывает....

CREATE TABLE [cmd_sync] (
	[id] [int] IDENTITY (1, 1) NOT NULL ,
	[tid] [int] NULL ,
	[mid] [int] NULL ,
	[aid] [bit] NULL CONSTRAINT [DF_cmd_sync_aid] DEFAULT (0),
	[gdate] [datetime] NULL CONSTRAINT [DF_cmd_sync_gdate] DEFAULT (getdate()),
	CONSTRAINT [PK_cmd_sync] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] 
) ON [PRIMARY]
30 авг 11, 14:10    [11200879]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
"Не работает" - это сообщение об ошибке?
30 авг 11, 14:13    [11200908]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
iap
Member

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

дубликаты по каким полям?
(А то запрос расшифровывать просто времени нет)
30 авг 11, 14:13    [11200914]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
marvel
Member

Откуда:
Сообщений: 1066
iap
marvel,

дубликаты по каким полям?
(А то запрос расшифровывать просто времени нет)


по полям:

[tid] [int]
[mid] [int]
[aid] [bit]
30 авг 11, 14:16    [11200931]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
iljy
Member

Откуда:
Сообщений: 8711
marvel,

а вы вставляете одинаковые записи? Потому что при замене Inserted на саму таблицу смысл запроса заметно меняется. Хотя сам принцип решения коряв - зачем разрешать вставку дублей, а потом с ней мужественно бороться??
30 авг 11, 14:16    [11200936]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
iap
Member

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

1. Триггер не нужен.
2.
CREATE UNIQUE INDEX [i_cmd_sync]([tid],[mid],[aid]) WITH(IGNORE_DUP_KEY=ON);
30 авг 11, 14:22    [11200991]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
ltllllll11111
Member

Откуда:
Сообщений: 1
iap,
CREATE TABLE [cmd_sync] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[tid] [int] NULL ,
[mid] [int] NULL ,
[aid] [bit] NULL CONSTRAINT [DF_cmd_sync_aid] DEFAULT (0),
[gdate] [datetime] NULL CONSTRAINT [DF_cmd_sync_gdate] DEFAULT (getdate()),
CONSTRAINT [PK_cmd_sync] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]

работает
30 авг 11, 19:15    [11203047]     Ответить | Цитировать Сообщить модератору
 Re: триггер на удаление дубликатов  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
ltllllll11111
iap,
CREATE TABLE [cmd_sync] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[tid] [int] NULL ,
[mid] [int] NULL ,
[aid] [bit] NULL CONSTRAINT [DF_cmd_sync_aid] DEFAULT (0),
[gdate] [datetime] NULL CONSTRAINT [DF_cmd_sync_gdate] DEFAULT (getdate()),
CONSTRAINT [PK_cmd_sync] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]

работает
Не понял!
30 авг 11, 20:04    [11203193]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить