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

Откуда:
Сообщений: 22
Здравствуйте . Работаю MS SQL есть такой две таблица
create table Tab1
(id int identity(1,1) primary key,
 dt datetime default getdate(),
 mon money,
)

и
create table Tab2
(id int identity(1,1),
 dt datetime default getdate(),
 mon money,
 Tab1ID int not null,
 constraint FK_tab2 foreign key (Tab1ID) references Tab1(id) on delete cascade
);

добавляю несколько запись на Tab1
insert into Tab1(mon) values(200),
                            (300),
                            (400)

Вопрос: Я хочу что это код выполнялось каждого дня только 1 раз
insert Tab2(mon, Tab1ID)
select mon/100*1 ,id
from Tab1
where exists(select mon, Tab1ID
             from Tab2 
             where Tab1.id=Tab2.Tab1ID)

Скажите пожалуйста как это реализовать ?
22 июл 15, 00:48    [17919451]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
skorpk
Member

Откуда: Волгоград
Сообщений: 273
Замените exist на not exist. И тогда будит вставка только один раз
22 июл 15, 06:18    [17919570]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
BESO1212
Member

Откуда:
Сообщений: 22
Это правильно , Забиль сказать что у меня на Tab1 такой триггер . при инсерте на Tab1 сразу читаю 10 % и сохраняю на Tab2.
CREATE TRIGGER  NachislINSERT
ON Tab1 FOR INSERT
AS
BEGIN
	------ Читаем процент из Tab1-mon и сразу сохраняю в таблицу  Tab2
	insert Tab2  (Tab1ID, mon)
	select id, mon/100*10
	from Tab1
	where NOT EXISTS
	                (select Tab1ID, mon from Tab2  
	                 where Tab1.id =Tab2.Tab1ID)
END

А потом хочу каждого дня 1% так
insert Tab2(mon, Tab1ID)
select mon/100*1 ,id
from Tab1
where exists(select mon, Tab1ID
             from Tab2 
             where Tab1.id=Tab2.Tab1ID)

и мне интересно как это реализовать , что он выполнялось каждого дня только 1 раз ?
22 июл 15, 08:57    [17919721]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
o-o
Guest
Т. е. вы хотите свой insert привязать не ко вставке в первую таблицу, а к расписанию? Если редакция не Экспресс, в джобе с расписанием раз в день в определенный час вставляйте. Если экспресс, в виндовом планировщике, используя sqlcmd
22 июл 15, 09:14    [17919766]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
BESO1212
Member

Откуда:
Сообщений: 22
Не экспресс ,
print @@version

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

Можно силка пожалуйста . где подробно написано про джобе или документация читать ?
22 июл 15, 09:28    [17919809]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
BESO1212
где подробно написано про джобе или документация читать ?
https://msdn.microsoft.com/ru-ru/library/ms187880(v=sql.105).aspx
22 июл 15, 09:44    [17919878]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68483
BESO1212
Можно силка пожалуйста . где подробно написано про джобе или документация читать ?
[url=job ms sql]"силка"[/url]
22 июл 15, 09:45    [17919883]     Ответить | Цитировать Сообщить модератору
 Re: Выполнять INSERT каждого дня только 1 раз  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68483
Прогер_самоучка
BESO1212
Можно силка пожалуйста . где подробно написано про джобе или документация читать ?
[url=job ms sql]"силка"[/url]
упс...
"силка"fix
22 июл 15, 09:46    [17919890]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить