Я пытаюсь следующегоSQL Server: Вставить партия с выходом статьей
- Вставить число записей в таблицу
A
с параметром табличного (TVP). Это TVP имеет дополнительный столбец (ы), которые не являются вA
- Получить вставленные идентификаторы из
A
и соответствующие дополнительные столбцы в в TVP и добавить их в другую таблицуB
Вот что я пытался
Тип:
CREATE TYPE tvp AS TABLE
(
id int,
otherid int,
name nvarchar(50),
age int
);
Таблицы:
CREATE TABLE A (
[id_A] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50),
[age] [int]
);
CREATE TABLE B (
[id_B] [int] IDENTITY(1,1) NOT NULL,
[id_A] [int],
[otherid] [int]
);
Вставка:
DECLARE @a1 AS tvp;
DECLARE @a2 AS tvp
-- create a tvp (dummy data here - will be passed to as a param to an SP)
INSERT INTO @a1 (name, age, otherid) VALUES ('yy', 10, 99999), ('bb', 20, 88888);
INSERT INTO A (name, age)
OUTPUT
inserted.id_A,
inserted.name,
inserted.age,
a.otherid -- <== isn't accepted here
INTO @a2 (id, name, age, otherid)
SELECT name, age FROM @a1 a;
INSERT INTO B (id_A, otherid) SELECT id, otherid FROM @a2
Однако это не удается с The multi-part identifier "a.otherid" could not be bound.
, который я предполагаю, что, как ожидается, потому что столбцы из других таблиц не принимаются INSERT
заявления (https://msdn.microsoft.com/en-au/library/ms177564.aspx).
from_table_name столбец префикс, который указывает таблицу, включенную в ЕКОМ в DELETE, UPDATE или MERGE заявление, которое используется для определения строк для обновления или удаления.
Так есть ли другой способ достичь этого?