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

Откуда:
Сообщений: 265
Я вывел в select, все что мне нужно и затем хочу кое какие поля изменить, у меня будет так работать? И правильно ли он сработает?

SELECT C.ID, c.CodePostav, (C.Firm + ' ' + C1.LawForm) AS Firm
FROM ContractFull C
INNER JOIN ContractFullLawForm C1 on C.lawForm = C1.LawID
INNER JOIN Actors A ON A.Name = (C.Firm + ' ' + C1.LawForm)
WHERE C.Archive = -1 AND C.Approval IN (4,7) AND A.ItemID = 31 AND A.[Status] > 0


UPDATE Actors
SET	Author = 1,	[Status] = -1, Received = GETDATE()
FROM ContractFull C
INNER JOIN ContractFullLawForm C1 on C.lawForm = C1.LawID
INNER JOIN Actors A ON A.Name = (C.Firm + ' ' + C1.LawForm)
WHERE C.Archive = -1 AND C.Approval IN (4,7) AND A.ItemID = 31 AND A.[Status] > 0
25 май 16, 12:16    [19217116]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Раз определили алиас, то логичнее и в UPDATE его использовать
UPDATE A
SET	Author = 1, [Status] = -1, Received = GETDATE()
FROM ContractFull C
INNER JOIN ContractFullLawForm C1 on C.lawForm = C1.LawID
INNER JOIN Actors A ON A.Name = C.Firm + ' ' + C1.LawForm
WHERE C.Archive = -1 AND C.Approval IN (4,7) AND A.ItemID = 31 AND A.[Status] > 0
25 май 16, 12:24    [19217169]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Хотя, не исключено, что это не обязательно.
25 май 16, 12:25    [19217178]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
iiyama
Member

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

+ если не уверены используйте
begin tran
/*ваш код*/
/*проверка*/
--commit tran
--rollback tran
25 май 16, 12:28    [19217212]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iiyama
Pabl0,

+ если не уверены используйте
begin tran
/*ваш код*/
/*проверка*/
--commit tran
--rollback tran

пусть залочит всех забыв commit/rollback
25 май 16, 12:30    [19217230]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
Pabl0
Member

Откуда:
Сообщений: 265
iiyama, это нужно так?

никогда не пользовался просто
begin tran
/*ваш код*/
/*проверка*/
commit tran
rollback tran

begin tran
/*ваш код*/
/*проверка*/
commit tran
rollback tran

UPDATE Actors
SET	Author = 1,	[Status] = -1, Received = GETDATE()
FROM ContractFull C
INNER JOIN ContractFullLawForm C1 on C.lawForm = C1.LawID
INNER JOIN Actors A ON A.Name = (C.Firm + ' ' + C1.LawForm)
WHERE C.Archive = -1 AND C.Approval IN (4,7) AND A.ItemID = 31 AND A.[Status] > 0
end
25 май 16, 12:48    [19217384]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pabl0,

однако.... BEGIN TRAN
25 май 16, 12:49    [19217398]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Pabl0
iiyama, это нужно так?
НЕ НАДО для одного UPDATEа открывать явную транзакцию!
Любая инструкция DML и так выполняется в транзакции, по-умолчанию - в неявной.
25 май 16, 13:36    [19217821]     Ответить | Цитировать Сообщить модератору
 Re: Из SELECTA в UPDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
Pabl0
iiyama, это нужно так?
НЕ НАДО для одного UPDATEа открывать явную транзакцию!
Любая инструкция DML и так выполняется в транзакции, по-умолчанию - в неявной.
Если речь только о проверке, то тогда я этого просто не понял, извините.
25 май 16, 13:38    [19217831]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить