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


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