Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как можно сделать вложенный запрос? / 9 сообщений из 9, страница 1 из 1
13.08.2018, 16:21
    #39686987
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
Есть две связанные таблицы
Как правильно сделать запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
INSERT INTO table1
(field1, field2, field3)
VALUES
(value1, value2, value3)
INSERT INTO table2
(field1, field2)
VALUES
(ID созданный в предыдущем запросу, value2)
...
Рейтинг: 0 / 0
13.08.2018, 16:25
    #39686990
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
...
Рейтинг: 0 / 0
13.08.2018, 17:23
    #39687023
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
когда во второй таблице есть внешний ключ
Код: sql
1.
FOREIGN KEY (user_id)  REFERENCES user (id) ON DELETE CASCADE


то при выполнении запроса, вылетает ошибка:
авторЦелевая таблица "table2" предложения OUTPUT INTO не может находиться ни с одной стороны связи (первичный ключ, внешний ключ). Обнаружено ссылочное ограничение "FK__table2__user_id__7C510D32".

а когда ключ убираю то все корректно добавляется в обе таблицы

запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
INSERT INTO user (
		username, 
		email
)
OUTPUT INSERTED.id, 'text'
INTO table2(
user_id,
message
)
VALUES (
		'user',
		'user@example.org',
)
...
Рейтинг: 0 / 0
13.08.2018, 17:26
    #39687026
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
черзе scope_identity сделайте

Код: sql
1.
2.
3.
4.
5.
insert into user ( username, email )
values ( 'user', 'user@example.org' )

into table2 ( user_id, message )
values ( scope_identity(), 'text' )
...
Рейтинг: 0 / 0
13.08.2018, 17:32
    #39687028
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
пишет:
авторНеправильный синтаксис около ключевого слова "INTO".
...
Рейтинг: 0 / 0
13.08.2018, 17:34
    #39687029
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
упс INSERT пропустил, а так работает
...
Рейтинг: 0 / 0
13.08.2018, 18:37
    #39687055
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
sc2r2beyкогда во второй таблице есть внешний ключСделайте табличную переменную и OUTPUT в неё.
В документации есть же пример.

Однако, надо знать, есть ли у таблицы триггеры, какие они и что делают.
...
Рейтинг: 0 / 0
13.08.2018, 19:11
    #39687068
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
тригеров нет
...
Рейтинг: 0 / 0
13.08.2018, 19:16
    #39687070
sc2r2bey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно сделать вложенный запрос?
это этом пример?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE @MyTableVar table( NewScrapReasonID smallint,  
                           Name varchar(50),  
                           ModifiedDate datetime);  
INSERT Production.ScrapReason  
    OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate  
        INTO @MyTableVar  
VALUES (N'Operator error', GETDATE());  

--Display the result set of the table variable.  
SELECT NewScrapReasonID, Name, ModifiedDate FROM @MyTableVar;  
--Display the result set of the table.  
SELECT ScrapReasonID, Name, ModifiedDate   
FROM Production.ScrapReason; 
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как можно сделать вложенный запрос? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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