我的表 cloum 名称状态有问题,有两种可能的条件状态“打开”和状态“关闭”。 我想在状态打开时更新,如果关闭则回滚。
con6=sqlite3.connect("inv_clossing_datail_1.db")
cur6=con6.cursor()
cur6.execute(''' SELECT * FROM inv_closing_db WHERE Invoice_no = {} '''.format(int(inv_sta2_e2.get())))
#cur6.execute(''' SELECT EXISTS(SELECT 1 FROM inv_closing_db WHERE Invoice_no = {} '''.format(int(inv_sta2_e2.get())))
search_inv_sta = cur6.fetchall()
if ('Status == "Closed" ') in search_inv_sta:
print("Alredy Closed This Invoice")
else:
print("This Invoice is OPEN NOT CLOSED")
这如何以最好、最简单的方式实现。
我想在状态打开时更新,如果关闭则回滚。
目前尚不清楚您真正想要什么,特别是在“回滚”方面。
您可能正在进行批量更新,因此任何关闭都将导致什么也不做,因此该列看起来是多余的。
您可以更新一行,实际上意味着仅从打开状态切换到关闭状态。在这种情况下,更新所需的只是在 WHERE 子句中包含对状态的检查
例如也许是这样的:-
UPDATE inv_closing_db SET status = 'closed' WHERE status = 'open';
也许您的意思是,如果状态已关闭,您希望状态集回滚,在这种情况下,可以使用 CASE WHEN THEN END ELSE 或其一部分表达式。
例如也许沿着(标题似乎暗示的意思):-
UPDATE inv_closing_db SET status = CASE status WHEN 'open' THEN 'closed' WHEN 'closed' THEN 'rollback' ELSE status END;
当然,关于我想要更新,您的问题的解释还有其他排列。它可能是另一列,而不是您要更新的状态列。然而,大部分内容都可以进行相应调整。
您可能需要考虑澄清您的问题。