【问题标题】:How to retrieve actual row inserted into SQL Server?如何检索插入到 SQL Server 中的实际行?
【发布时间】:2020-02-22 11:48:33
【问题描述】:

我想创建一个可以将记录插入表中的函数,如果打印回创建的记录列以知道它是否有效,那会很酷,因为该信息稍后将用于下一个查询。

按照

的教程进行操作

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')

在某种程度上起作用,因为我得到了回报

[(Decimal('113'), )]

事实上,这就是创建的密钥,有没有办法让我获得所有列?我想这与这部分有关

有什么建议吗?
谢谢。

"SELECT @@IDENTITY AS ID;"

【问题讨论】:

  • 任何基本的 SQL 教程都应该涵盖 SELECT 语句。

标签: python sql sql-server database pyodbc


【解决方案1】:

您可以在 INSERT 语句中放置一个 OUTPUT 子句以返回插入的值。对于测试表...

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多