我正在尝试在 SQL Server 2008 过程中实现自治事务。该过程将只有两个嵌套事务,将InnerTransaction提交但OuterTransaction将回滚。我见过很多成功实现逆向过程的例子。但我还没有找到任何解决我的问题的方法。
示例表脚本
create table testTab1(id int identity(1,1) primary key, name varchar(100));
create table testTab2(id int , name varchar(100));
insert into testTab1(name) values('User1'),('User2'),('User3');
Run Code Online (Sandbox Code Playgroud)
程序示例代码
CREATE PROCEDURE [dbo].[testSP2]
AS
BEGIN
SET IMPLICIT_TRANSACTIONS ON
BEGIN TRAN
insert into testTab1(name) values('User4'),('User5'),('User6');
IF @@ROWCOUNT>0
BEGIN
SAVE TRAN InnerTran
insert into testTab2(id,name) values(1,'User4'),(2,'User5'),(3,'User6');
--PRINT 'NUMBER OF TRAN='+CAST(@@TRANCOUNT AS VARCHAR(5))
COMMIT TRAN InnerTran
END
ROLLBACK
SET IMPLICIT_TRANSACTIONS OFF
END
Run Code Online (Sandbox Code Playgroud)
我想要的输出是
table_customers(customer_id, customer_name)
table_orders(customer_id, order_id, order_datetime)
Run Code Online (Sandbox Code Playgroud)
我想为last order date每个customer. 如果顾客没有下任何订单,请00-00-0000为她退货。
这是我的查询。
select C.customer_id , date(O.order_datetime)
from table_customers C
INNER JOIN table_orders O ON C.customer_id = O.customer_id
group by O.customer_id order by O.order_datetime desc limit 1;
Run Code Online (Sandbox Code Playgroud)
它仅返回最后一位客户的最后订单日期。
如何获取所有客户的最后订单日期?