powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице
25 сообщений из 57, страница 1 из 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
25 сообщений из 57, страница 1 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Автоматическое добавление значения при добавлении элемента в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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