Вставьте новый идентификатор в таблицу внешнего ключа - PullRequest
0 голосов
/ 27 сентября 2019

Я добавляю много строк в базу данных через соединение ODBC, и для каждой добавленной строки мне нужно добавить идентификатор (первичный ключ) новой строки в другую таблицу (внешний ключ из одного столбца).таблица).

Как я могу это сделать?

Вот что я рассмотрел.

  1. Использование одного оператора SQL
    Похоже, что нет никакого синтаксиса, который будет это делать.

  2. Использовать составной оператор
    Поэтому я попытался добавить SET ? = SCOPE_IDENTITY()к моему запросу и привязки выходного параметра.Во-первых, мне кажется, что я не получаю результат обратно, но я могу, вероятно, справиться с этим, если мой синтаксис правильный.Во-вторых, я получаю сообщение об ошибке при попытке вставить значение во вторую таблицу.Ошибка: Соединение занято результатами для другой команды (состояние: HY000) .Мои запросы подготовлены, потому что мне нужно выполнять их много раз.Итак, я заканчиваю двумя запросами.Но похоже, что я не могу выполнить еще одну, пока одна все еще активна (что бы это ни значило точно).

Мне бы очень хотелось, если бы кто-то мог прокомментировать любой изэти два подхода или, возможно, рекомендовать другой способ приблизиться к этому, чтобы я мог заставить это работать.

1 Ответ

0 голосов
/ 27 сентября 2019

Обычно вы используете выражение output и такие выражения, как:

declare table @ids table (id int);

insert into t ( . . . )
    output t_id into @ids
    . . . ;

update t2
    set t_id = i.id
    from @ids i
    where . . .;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...