Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице / 25 сообщений из 57, страница 1 из 3
15.01.2018, 15:43
    #39584523
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Доброго времени суток!

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

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

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

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

KOHHEKTOPчтобы происходила проверка и когда появлялась новая запись, то была проверка на то, есть ли какое значение в поле Firm и если оно есть, то присваивало это значение.
Код: sql
1.
INSERT .. ON DUPLICATE KEY UPDATE ... , firm=COALESCE(firm, VALUES(firm))
...
Рейтинг: 0 / 0
15.01.2018, 19:16
    #39584672
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Akina, а можно как-то через if [новое_значение_Firm] = [предыдущее] else [меняем_его_на_предыдущее] ?
...
Рейтинг: 0 / 0
15.01.2018, 19:56
    #39584687
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
На MySQL-сервере? Нет.
...
Рейтинг: 0 / 0
15.01.2018, 20:08
    #39584692
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
artas, можно подробнее про тригеры?
...
Рейтинг: 0 / 0
16.01.2018, 06:59
    #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
16.01.2018, 07:52
    #39584779
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Триггер тут не нужен.
Решение дано - и всё оно укладывается в один запрос. Зачем ещё огород городить?
...
Рейтинг: 0 / 0
16.01.2018, 09:13
    #39584808
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Akina, быть может Вы меня не правильно поняли.
Обратите внимание на EmploeeId - он может быть одинаковым при добавлении новых строк. И если он будет одинаковый, то мне нужно чтобы idFirmR приняло его предыдущее значение.
...
Рейтинг: 0 / 0
16.01.2018, 09:15
    #39584809
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
KOHHEKTOP , каким образом Вы идентифицируете ту конкретную запись, которую следует обновить?
...
Рейтинг: 0 / 0
16.01.2018, 09:38
    #39584825
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Akina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
...
Рейтинг: 0 / 0
16.01.2018, 10:10
    #39584858
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
KOHHEKTOPAkina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
Немного не так. При добавлении нового элемента, это поле у всех становится NULL, но некоторым, у кого уже было значение раньше, нужно его вернуть.
...
Рейтинг: 0 / 0
16.01.2018, 10:11
    #39584860
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
KOHHEKTOPKOHHEKTOPAkina, по наличию данных в EmploeeId. Если там NULL, то чаще всего обновлять не нужно
Немного не так. При добавлении нового элемента, это поле у всех становится NULL, но некоторым, у кого уже было значение раньше, нужно его вернуть.
IdFirmR Становится NULL
...
Рейтинг: 0 / 0
16.01.2018, 11:39
    #39584936
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
KOHHEKTOP , ты не понял вопроса.
У тебя есть набор записей. Тебе приходит запись с некими значениями полей. На основании значений каких полей ты принимаешь решение, новая это запись или обновляющая? А если обновляющая - то какую конкретную запись она должна обновить...
...
Рейтинг: 0 / 0
16.01.2018, 11:59
    #39584951
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Akina,

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

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

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



И засунуть это в триггер. Но разумеется оно так не прокатит.
...
Рейтинг: 0 / 0
16.01.2018, 15:18
    #39585177
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
KOHHEKTOPно SQL 2008 и не поддерживает ихУ Вас, я извиняюсь, какой именно сервер БД?
...
Рейтинг: 0 / 0
16.01.2018, 15:45
    #39585195
KOHHEKTOP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое добавление значения при добавлении элемента в таблице
Akina, MySQL 2008 Ent
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице / 25 сообщений из 57, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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