powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице
57 сообщений из 57, показаны все 3 страниц
Автоматическое добавление значения при добавлении элемента в таблице
    #39584523
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Имеется таблица, которая временами пополняется. В ней есть интересный столбец, который отвечает за подразделение (назову его Firm ). Чаще всего он NULL, но бывает такое, что в нём содержатся данные (id фирмы). Самая печаль происходит тогда, когда таблица обновляется. Она обновляется и добавляются новые элементы, при этом это самое поле становится снова NULL.
И мне интересно, как сделать так (через хранимую процедуру или job какой-нибудь), чтобы происходила проверка и когда появлялась новая запись, то была проверка на то, есть ли какое значение в поле Firm и если оно есть, то присваивало это значение.

Своеобразная проверка по Firm - отдел человека и ChelId - id сотрудника. Не всем новым элементам, а по ид чела, т.е. у одного чела могут быть несколько записей.

Надеюсь не запутал.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584534
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP,

1) Тригеры
2) Более верное, делать правильный апдейт
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584549
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOPСамая печаль происходит тогда, когда таблица обновляется. Она обновляется и добавляются новые элементы, при этом это самое поле становится снова NULL.Значит, не через то место обновляете.

KOHHEKTOPчтобы происходила проверка и когда появлялась новая запись, то была проверка на то, есть ли какое значение в поле Firm и если оно есть, то присваивало это значение.
Код: sql
1.
INSERT .. ON DUPLICATE KEY UPDATE ... , firm=COALESCE(firm, VALUES(firm))
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584672
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, а можно как-то через if [новое_значение_Firm] = [предыдущее] else [меняем_его_на_предыдущее] ?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584687
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На MySQL-сервере? Нет.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584692
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas, можно подробнее про тригеры?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584771
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можете подтолкнуть в какую сторону нужно думать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
USE My_BD
GO

CREATE TRIGGER TEST_FIRM ON MY_TABLE AFTER INSERT
BEGIN
UPDATE SET ChelId WHERE Firm = ....... 
END



В общем я не знаю как показать что мне нужно именно предыдущая и чтобы внимание было уделено на ChelId, а не на вообще Id
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584779
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггер тут не нужен.
Решение дано - и всё оно укладывается в один запрос. Зачем ещё огород городить?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584808
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, быть может Вы меня не правильно поняли.
Обратите внимание на EmploeeId - он может быть одинаковым при добавлении новых строк. И если он будет одинаковый, то мне нужно чтобы idFirmR приняло его предыдущее значение.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584809
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP , каким образом Вы идентифицируете ту конкретную запись, которую следует обновить?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584825
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584858
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOHHEKTOPAkina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
Немного не так. При добавлении нового элемента, это поле у всех становится NULL, но некоторым, у кого уже было значение раньше, нужно его вернуть.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584860
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOHHEKTOPKOHHEKTOPAkina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
Немного не так. При добавлении нового элемента, это поле у всех становится NULL, но некоторым, у кого уже было значение раньше, нужно его вернуть.
IdFirmR Становится NULL
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584936
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP , ты не понял вопроса.
У тебя есть набор записей. Тебе приходит запись с некими значениями полей. На основании значений каких полей ты принимаешь решение, новая это запись или обновляющая? А если обновляющая - то какую конкретную запись она должна обновить...
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584951
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Ну можно сказать что это поле DateUpdate. Т.е. если оно стало новее, то IdFirmR должно принять значение предыдущего. При это акцент ставится на EmploeeId , а не но новую запись вообще.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39584962
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но лучше основываться на Id . Вот пример проблемной записи. Здесь видно что появилась новая запись (с новым Id) и EmploeeId у всех записей одинаковый (выборка сделана по этому принципу), но idFirmR у него стал по умолчанию - NULL, а нужно чтобы она была как у предыдущей записи, т.е. 1881
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585005
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOPНу можно сказать что это поле DateUpdate. Т.е. если оно стало новее, то IdFirmR должно принять значение предыдущего. При это акцент ставится на EmploeeId , а не но новую запись вообще.Ты что, не понимаешь, какую хрень говоришь? По твоим словам, если имеется наполнение, показанное на первом скриншоте, и тебе поступает запись с датой обновления 2018-01-17 ("оно стало новее" - условие выполнено, а значения остальных полей ты вообще не рассматриваешь, значит, они ни на что не влияют), то IdFirm некоей записи (какой из них? непонятно) должно стать равно значению IdFirm предыдущей записи (при какой сортировке? непонятно). И при чём тут какой-то акцент?
Включай мозг и формулируй так, чтобы любой, кто имеет исходные данные и ТОЛЬКО твои слова, мог ОДНОЗНАЧНО ПРАВИЛЬНО выполнить операцию.
KOHHEKTOPНо лучше основываться на Id .Не должно быть никакого "лучше" или "хуже". Должно быть строго и однозначно. Сотне человек дали исходные данные и алгоритм, и все сто сделали одинаково.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585020
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, имеется таблица. Она постоянно пополняется. Появляются новые записи с новым Id, при этом не всегда другие значения в столбцах меняются.
Нужно чтобы при появлении новой записи (нового Id), осуществлялась проверка по значению в столбце EmploeeId и если у новой записи EmploeeId уже существовал в таблице, то этой записи присваивается значение столбца idFirmR такое же, какое было у предыдущей записи с одинаковым EmploedId.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585040
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOPпроверка по значению в столбце EmploeeId и если у новой записи EmploeeId уже существовал в таблице, то этой записи присваивается значение столбца idFirmR такое же, какое было у предыдущей записи с одинаковым EmploedId.Предыдущей - при какой сортировке? Если записей с таким EmploeeId - несколько? Ибо без сортировки понятия "предыдущая запись" - не существует.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585043
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё. Согласно последней формулировке, записи ТОЛЬКО добавляются. Как тогда понимать фразу об обновлении таблицы в первом сообщении?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585082
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, сортировка по столбцу Id. В том то и дело, что записей с EmploeeId может быть несколько, но Id у них будет разный и тот, что больше, тот и новее.
Про обновление писал когда имел ввиду что фактически выглядит так, что запись обновляется (EmploeeId же одинаковый и как бы запись одна), хотя на самом деле записи добавляются.

Понимаю что запутал в конец.
Пробовал через LAG и LEAD, но SQL 2008 и не поддерживает их. А принцип мне нужен почти такой же, что они и выполняют.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585090
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле сортировка не особо важно.
Достаточно примитивно осуществить проверку, что при добавлении новой записи, смотрелось на EmploeeId и если оно уже есть в базе, то этой новой записи присваивалось значение idFirmR такое же, какое было у EmploeeId. Пусть даже это будет NULL

Как то так...
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585145
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочется какой-то бред в виде
Код: sql
1.
UPDATE My_Table SET idFirmR = idFirmR where EmploeeId = EmploeeId



И засунуть это в триггер. Но разумеется оно так не прокатит.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585177
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOPно SQL 2008 и не поддерживает ихУ Вас, я извиняюсь, какой именно сервер БД?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585195
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, MySQL 2008 Ent
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585201
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP , такой версии не существует. Проверьте по буквам.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585212
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, SQL SERVER 2008 R2 Enterprise Edition
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585217
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это MS SQL, а не MySQL. Вообще другой сервер, и другой соответственно раздел форума.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585256
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, т.е. мне переезжать туда и тут помощи не будет?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585288
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать тему в профильном разделе в любом случае есть смысл. Или подождать, возможно, модератор перенесёт...
Возможно, помощь будет и тут. Но вряд ли от меня - я так и не смог до конца понять происходящее.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585294
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP,

SELECT version();

что вернет?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585349
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

есть вот такой вот кастылик, думаю разберетесь

CREATE
TRIGGER nullCorr ON test_empl
AFTER INSERT
AS
IF (select idfirm from inserted ins) is null
BEGIN
update test_empl
set idfirm = (select max(isnull(idfirm, 0)) from test_empl te where te.empid = (select empid from inserted ins))
where id = (select id from inserted ins);
END
GO
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585356
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну или если немного подкрутить то лучше вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TRIGGER nullCorr ON test_empl
INSTEAD OF INSERT
AS
  IF (select idfirm from inserted ins) is null
BEGIN
  INSERT INTO test_empl
    SELECT distinct new.id, new.empid, old.idfirm 
      from inserted new
      join test_empl old on new.empid = old.empid 
      and old.idfirm is not null
END
GO
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585418
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOPпри добавлении новой записи, смотрелось на EmploeeId и если оно уже есть в базе, то этой новой записи присваивалось значение idFirmR такое же, какое было у EmploeeIdЯ бы предложил связку idFirmR - EmploeeId вынести в отдельную таблицу.
Тогда проблема исчезнет сама собой.
А при необходимости ее можно джойнить с основной таблицей и получать все те idFirmR, которые нужны.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585489
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov,

выдает ошибку на 6 строку
"имя столбца или число представленных значений не соответствует определению таблицы"
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585550
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP,

Поскольку это не Update а уже INSERT - надо перечислить все необходимые поля для Insert.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585562
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP,

Критика:

1. IF (select idfirm from inserted ins) is null -- ?
2. INSTEAD OF INSERT -- ?
3. from inserted new join test_empl old on new.empid = old.empid
and old.idfirm is not null -- ?

Вывод:

Если у Вас рабочая система, то не годно. Для лабы- хз, я б не принял
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585708
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для правильного решения нужно знать что это за система(хотябы в рамках текущей задачи), какие объемы и частота и т.д. и пр.

Как костыль или для лабы - годится.
Дальше пусть автор решает что нужно или важно.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585726
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapuzovну или если немного подкрутить то лучше вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TRIGGER nullCorr ON test_empl
INSTEAD OF INSERT
AS
  IF (select idfirm from inserted ins) is null
BEGIN
  INSERT INTO test_empl
    SELECT distinct new.id, new.empid, old.idfirm 
      from inserted new
      join test_empl old on new.empid = old.empid 
      and old.idfirm is not null
END
GO


я не в силах вникнуть в сие творение, расшифруйте
если вставка больше одной записи - fail
если повезло и вставка одной, то вставляем беря данные из той же таблицы которая пустая :) т.е. не вставляем никогда
прелестно
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585911
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov, какие данные нужны?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585950
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOHHEKTOP,

1. может ли один eployeeid иметь разные firmId(включая null) - тогда, какой из firmId брать (последний/макисмальный)
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585952
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2. какое поле можно брать для уникальности
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39585985
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov,

1) Может. Последний
2) Id
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39586487
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда если по всем входным условиям то
можно сделать так

Код: 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.
CREATE 
TRIGGER [get_prev_firmID] ON ohot_source.dbo.test_add_last_val
INSTEAD OF INSERT 
AS
SET NOCOUNT ON
BEGIN
	-- if table is empty
	if ( (select count(1) from test_add_last_val) < 1 )
		BEGIN INSERt into test_add_last_val SELECT * FROM inserted END ;
	ELSE 
	-- if table not empty
	BEGIN 
	insert into test_add_last_val (id, empID, firmID) -- add here all other columns needed for insert except "firmID"
	select new.id, new.empID, -- add here all other columns needed for insert except "firmID"
		CASE WHEN (new.firmID is null and old.oldrow = 1) THEN old.firmID 
			ELSE new.firmID END AS firmID
		from inserted new
		LEFT OUTER JOIN (
		select tt.empID, tt.firmID, 1 as oldrow from 
			(select empID, firmID, ROW_NUMBER() OVER(partition by empID order by tupd desc) rown 
				from test_add_last_val) tt where tt.rown = 1
				) old 
		ON new.empID = old.empID
	END
END;
GO



Проблемка остается только если в пустую таблицу записывается несколько записей - в БД все ляжет без использования триггера, потом все отрабатывает как требуется, можно подключить курсор конечно... но это будет медленно
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39587065
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov,

не могу понять что за select tt .empID
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39587071
Кусочек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOHHEKTOPkarapuzov,

не могу понять что за select tt .empID

Код: sql
1.
2.
3.
select tt.empID, tt.firmID, 1 as oldrow from 
			(select empID, firmID, ROW_NUMBER() OVER(partition by empID order by tupd desc) rown 
				from test_add_last_val) tt --Вот же:) 
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39588024
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кусочек, на всё это мне пишет "неправильный синтаксис около ключевого слова "where"
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589111
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык ведь там не INTERESTED должно быть а INSERTED
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589116
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHHEKTOP,

where за скобку засунуть
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589120
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и вот этот кусок неправильно... я там не просто 2 раза выборку завернул и добавил (where tt.rown = 1)
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589134
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот твой вариант, если поле DateUpdate существует
...
left outer join(
select tt.EmployeeId, tt.IdFirmR, 1 as oldrow from
(select EmployeeId, IdFirmR, ROW_NUMBER() OVER(partition by EmployeeId order by DateUpdate desc) rown
from ************) tt where tt.rown = 1
) old
...
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589649
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov, спасибо большое. Триггер создался после доработки этой. Пока не знаю как отработает. Завтра быть может узнаю, когда будет обновление
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589651
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
надеюсь этот триггер не поломает всю таблицу, иначе будет ж...
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39589666
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечный результат :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TRIGGER [dbo].[idFirmRrRrR] ON [dbo].[MyBD]
INSTEAD OF INSERT
AS
SET NOCOUNT ON
BEGIN
	if ((select COUNT(1) from MyBD) < 1)
		BEGIN INSERT INTO MyBD SELECT * FROM inserted END ;
	else
	BEGIN
	insert into MyBD (Id, EmploeeId, idFirmR)
	select new.id, new.emploeeid,
		case when (new.idfirmr is null and old.oldrow = 1) then old.idfirmr
			else new.idfirmr end as idfirmr
		from inserted new
		left outer join (
		select tt.EmploeeId, tt.IdFirmR, 1 as oldrow from
		 (select EmploeeId, IdFirmR, ROW_NUMBER() over (partition by EmploeeId order by dateupdate desc) rown
			from MyBD) tt where tt.rown = 1
			) old
		on new.emploeeId = old.emploeeId
	END
END;
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39590544
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как то странно оно работает. Есть записи, которые сегодня обновились и IdFirmR у них стоит такой же, который был у предыдущих. А есть такие, которые обновились и IdFirmR снова стал NULL.

Есть в таблице ещё один столбец. dl . Там просто как знак того, актуальна ли запись. У него значение либо 0 , либо 1

Быть может переделать триггер на него? Чтобы он смотрел на dl и если он 0 , то idFirmR берется с предыдущего? Такое вообще возможно?
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39598535
karapuzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсть в таблице ещё один столбец. dl . Там просто как знак того, актуальна ли запись. У него значение либо 0, либо 1

Быть может переделать триггер на него? Чтобы он смотрел на dl и если он 0, то idFirmR берется с предыдущего? Такое вообще возможно?


- можно и его использовать тогда данные будут точнее

Как то странно оно работает. Есть записи, которые сегодня обновились и IdFirmR у них стоит такой же, который был у предыдущих. А есть такие, которые обновились и IdFirmR снова стал NULL.

В: 1. может ли один eployeeid иметь разные firmId(включая null) - тогда, какой из firmId брать (последний/макисмальный)
О: 1) Может. Последний

Значит такие данные были, и соотв. логике обновились новые.
...
Рейтинг: 0 / 0
Автоматическое добавление значения при добавлении элемента в таблице
    #39599603
KOHHEKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapuzov,

Я так понимаю просто замена EmploeeId на dl не поможет и нужно поставить условие типа if dl=0 else ...
что-то типа rown from MyBD ...
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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