Sql-Server
SQL 在更新查詢中按子查詢插入
我想編寫一個查詢來更新一個表中的列並在另一個表中插入行。
像這樣的東西
update applications set applications.rejected = 1, ( INSERT INTO rejection_reason (column1, column2) VALUES (value1, value2) ) where applications.id = 123
我知道我可以用 2 個查詢來完成,但我想一次性完成。有沒有辦法通過單個查詢更新和插入 2 個表?
這可以使用觸發器來實現。基於兩個表的架構上的有限資訊,您可能必須在rejection_reason 表上創建插入觸發器,這將更新表應用程序。假設拒絕表有一個 application_id 列,可以用作兩個表之間的連結。
例如
CREATE TRIGGER i_rejection_reason ON rejection_reason AFTER INSERT AS BEGIN UPDATE applications SET applications.rejected = 1, WHERE applications.id = inserted.application_id END
下面的插入將通過觸發器更新應用程序表。
INSERT INTO rejection_reason (column1, column2, application_id) VALUES (value1, value2, 123)
PS:考慮多行插入的影響(參考:https ://docs.microsoft.com/en-us/sql/relational-databases/triggers/create-dml-triggers?view=sql-server-ver15#TsqlProcedure )和測試性能以及在生產環境中使用它之前。