Как получить фактическую строку, вставленную в SQL Сервер? - PullRequest
0 голосов
/ 22 февраля 2020

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

после учебника из

https://cppsecrets.com/users/1173109101103104971091051161169710849545464103109971051084699111109/Python-SQL-Server-insert-record-into-table-and-get-inserted-ID.php

def insert_query(cursor, query):
    cursor.execute(query)
    cursor.commit()
    cursor.execute("SELECT @@IDENTITY AS ID;")
    all1 = cursor.fetchall()
    print(all1)

мой запрос:

insert into my_table values (102,'testing_stuff' , 3,'Y')

работает в некоторой степени, так как я вхожу в return

[(Decimal('113'), )]

на самом деле это созданный ключ, есть ли способ, где я могу получить все столбцы? Я думаю, что-то связано с частью

какие-нибудь советы, ребята?
спасибо.

"SELECT @@IDENTITY AS ID;"

1 Ответ

0 голосов
/ 22 февраля 2020

Вы можете поместить предложение OUTPUT в инструкцию INSERT, чтобы вернуть вставленные значения. Для тестовой таблицы ...

CREATE TABLE #party (
    guest_id int identity primary key,
    guest_name nvarchar(50) not null,
    beverage nvarchar(50) default N'water'
);

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

1> INSERT INTO #party (guest_name)
2> OUTPUT INSERTED.guest_id, INSERTED.guest_name, INSERTED.beverage
3> VALUES (N'Edith');
4> go
guest_id    guest_name beverage
----------- ---------- --------
          1 Edith      water

(1 rows affected)

... но если вы вставите значения в некоторые другие (необязательные) столбцы, они тоже будут возвращены

1> INSERT INTO #party (guest_name, beverage)
2> OUTPUT INSERTED.guest_id, INSERTED.guest_name, INSERTED.beverage
3> VALUES (N'Gord', N'bourbon');
4> go
guest_id    guest_name beverage
----------- ---------- --------
          2 Gord       bourbon

(1 rows affected)
...