Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вставка в 2 связанные таблицы / 20 сообщений из 20, страница 1 из 1
12.07.2020, 18:43
    #39978689
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
Привет, есть 2 таблицы, условно:
country
id | country
и к примеру cities:
id | id_country | city
Задача: вставить в cities n-ное количество городов определенной страны. Но если страны нет, вставить сначала страну, получить id вставленной записи, а потом только вставлять города. Можно ли это сделать без использования процедур ?
...
Рейтинг: 0 / 0
12.07.2020, 19:43
    #39978704
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
Можно ли это сделать без использования процедур ?
Да, можно, просто написав нужные запросы.
...
Рейтинг: 0 / 0
12.07.2020, 19:53
    #39978705
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
alexeyvg
bobo96
Можно ли это сделать без использования процедур ?
Да, можно, просто написав нужные запросы.

Вы не могли бы привести пример, как это можно сделать ?
...
Рейтинг: 0 / 0
12.07.2020, 20:00
    #39978708
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
alexeyvg
пропущено...
Да, можно, просто написав нужные запросы.

Вы не могли бы привести пример, как это можно сделать ?
ну как, вставка записи в страну, потом получаете ИД страны (записываете в переменную из SCOPE_IDENTITY), потом вставляете города, используя эту переменную как ИД страны.
...
Рейтинг: 0 / 0
12.07.2020, 20:06
    #39978709
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
alexeyvg
bobo96
пропущено...

Вы не могли бы привести пример, как это можно сделать ?
ну как, вставка записи в страну, потом получаете ИД страны (записываете в переменную из SCOPE_IDENTITY), потом вставляете города, используя эту переменную как ИД страны.

А, ну эт понятно) Думал мало ли одним красивым запросом можно такое провернуть.
Будем тогда хранимку пилить, спасибо.
...
Рейтинг: 0 / 0
12.07.2020, 20:09
    #39978710
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
alexeyvg
пропущено...
ну как, вставка записи в страну, потом получаете ИД страны (записываете в переменную из SCOPE_IDENTITY), потом вставляете города, используя эту переменную как ИД страны.

А, ну эт понятно) Думал мало ли одним красивым запросом можно такое провернуть.
Будем тогда хранимку пилить, спасибо.
Не, одним запросом нельзя.
Можно триггер написать instead off на city, но триггер же и есть хранимая процедура.

Но то, про что я писал, не обязательно оформлять как хранимую процедуру, можно это выполнить как запрос.
...
Рейтинг: 0 / 0
12.07.2020, 20:13
    #39978711
bobo96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
alexeyvg
bobo96
пропущено...

А, ну эт понятно) Думал мало ли одним красивым запросом можно такое провернуть.
Будем тогда хранимку пилить, спасибо.
Не, одним запросом нельзя.
Можно триггер написать instead off на city, но триггер же и есть хранимая процедура.

Но то, про что я писал, не обязательно оформлять как хранимую процедуру, можно это выполнить как запрос.

Я понимаю, что это просто в виде запросов можно сделать, просто делать это надо в spring'e, если понимаете, о чем я, мне кажется в этом случае проще хранимку сделать, тупо кода меньше писать)
...
Рейтинг: 0 / 0
12.07.2020, 21:54
    #39978722
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
alexeyvg
пропущено...
Не, одним запросом нельзя.
Можно триггер написать instead off на city, но триггер же и есть хранимая процедура.

Но то, про что я писал, не обязательно оформлять как хранимую процедуру, можно это выполнить как запрос.

Я понимаю, что это просто в виде запросов можно сделать, просто делать это надо в spring'e, если понимаете, о чем я, мне кажется в этом случае проще хранимку сделать, тупо кода меньше писать)
Да, тут уж вам выбирать, как проще.

Я подозреваю, что для всяких фреймворков такая ситуация является стандартной, типа вставить полный комплект записей мастер-детейл с любым количеством уровней вложенности, но это вам виднее.
...
Рейтинг: 0 / 0
13.07.2020, 11:49
    #39978856
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
alexeyvg
пропущено...
Не, одним запросом нельзя.
Можно триггер написать instead off на city, но триггер же и есть хранимая процедура.

Но то, про что я писал, не обязательно оформлять как хранимую процедуру, можно это выполнить как запрос.

Я понимаю, что это просто в виде запросов можно сделать, просто делать это надо в spring'e, если понимаете, о чем я, мне кажется в этом случае проще хранимку сделать, тупо кода меньше писать )


чисто тупо меньше кодить жесткому опытному кодеро-девелоперу, если вы понимате, о чем я
...
Рейтинг: 0 / 0
13.07.2020, 19:05
    #39979173
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96
alexeyvg
пропущено...
ну как, вставка записи в страну, потом получаете ИД страны (записываете в переменную из SCOPE_IDENTITY), потом вставляете города, используя эту переменную как ИД страны.

А, ну эт понятно) Думал мало ли одним красивым запросом можно такое провернуть.
Будем тогда хранимку пилить, спасибо.

Одним запросом - нельзя.
Двумя - можно.
1. Merge списка стран в таблицу стран output пары исходный ключ - результирующий ключ в темповую таблицу.
2. insert в таблицу городов с результирующими клчами Select from список городов inner join темповая таблица по исходному ключу.

Но таки да. Лучше хранимку.
...
Рейтинг: 0 / 0
13.07.2020, 19:18
    #39979181
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
bobo96,

Если Вы старательно избегаете процедур в приложении, то роете себе яму.
В случае изменения таблиц приложение станет неработоспособным, например, после рефакторинга базы, и его придется переписывать. Особый батхёрт получите при использовании EF или других FW.
...
Рейтинг: 0 / 0
13.07.2020, 19:55
    #39979206
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
uaggster
Одним запросом - нельзя.
Код: 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.
declare @a table (id int identity, s varchar(100));
declare @b table (id int identity, a_id int);

insert into @b
 (a_id)
 select
  m.id
 from
  (
   merge into @a t
   using (values (1, 'a')) s(id, s) on s.id = t.id
   when not matched then
    insert
     (s)
    values
     (s.s)
   when matched then
    update
     set s = s.s
   output
    inserted.id
  ) m(id);

select * from @a;
select * from @b;
...
Рейтинг: 0 / 0
14.07.2020, 06:09
    #39979272
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
invm, где тут смайл "с изумлением протираю глаза"???
Оно так точно работать будет?
... надо попробовать.
"Ну ваще" (С)
...
Рейтинг: 0 / 0
14.07.2020, 11:17
    #39979349
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
uaggster,

output выражение, если его не направить в таблицу, вернёт в этом выражении набор строк.
...
Рейтинг: 0 / 0
22.07.2020, 14:00
    #39982696
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
invm
uaggster
Одним запросом - нельзя.
Код: 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.
declare @a table (id int identity, s varchar(100));
declare @b table (id int identity, a_id int);

insert into @b
 (a_id)
 select
  m.id
 from
  (
   merge into @a t
   using (values (1, 'a')) s(id, s) on s.id = t.id
   when not matched then
    insert
     (s)
    values
     (s.s)
   when matched then
    update
     set s = s.s
   output
    inserted.id
  ) m(id);

select * from @a;
select * from @b;

супер
...
Рейтинг: 0 / 0
22.07.2020, 14:36
    #39982727
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
У меня импортирующая хран. процедура (из тхт-файла) вставляет в 5 таблиц.

Проверяет на существование, если нет, то вставляет как новое, получает новое ИД, вставляет этот ИД в таблицу. И т.д.
...
Рейтинг: 0 / 0
23.07.2020, 08:27
    #39982920
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
invm
uaggster
Одним запросом - нельзя.
Код: 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.
declare @a table (id int identity, s varchar(100));
declare @b table (id int identity, a_id int);

insert into @b
 (a_id)
 select
  m.id
 from
  (
   merge into @a t
   using (values (1, 'a')) s(id, s) on s.id = t.id
   when not matched then
    insert
     (s)
    values
     (s.s)
   when matched then
    update
     set s = s.s
   output
    inserted.id
  ) m(id);

select * from @a;
select * from @b;



Жаль, что ещё один уровень вложенности не прокатить.
...
Рейтинг: 0 / 0
29.07.2020, 20:53
    #39985144
new_bember
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
А где вообще про синтаксис хранимок почитать вменяемо можно? А то мне тут досталось хозяйство "привет из 2000 года", всё работает но надо новых фич добавить.
...
Рейтинг: 0 / 0
29.07.2020, 21:06
    #39985146
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
...
Рейтинг: 0 / 0
29.07.2020, 21:31
    #39985152
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка в 2 связанные таблицы
new_bember
А где вообще про синтаксис хранимок почитать вменяемо можно? А то мне тут досталось хозяйство "привет из 2000 года", всё работает но надо новых фич добавить.
Там же синтаксиса одна строчка, чего там нужно вменяемого?
В документации прочитать одну страничку, и больше вы информации нигде не найдёте.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вставка в 2 связанные таблицы / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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