SQL中的条件插入

时间:2016-12-06 16:45:38

标签: sql acid sqltransaction

我正在寻找一个使用ACID事务对表进行数据一致性的示例。我在这里看到了这个例子:http://microservices.io/patterns/data/shared-database.html summery如下:CUSTOMER表有一列CREDIT_LIMIT。我们想在ORDER表中插入一条新记录如果OrderPrice<该用户的CREDIT_LIMIT。示例中的书面查询如下,我认为它不完整:

BEGIN TRANSACTION
 SELECT ORDER_TOTAL
  FROM ORDERS WHERE CUSTOMER_ID = 123
SELECT CREDIT_LIMIT
  FROM CUSTOMERS WHERE CUSTOMER_ID = 123
 INSERT INTO ORDERS
COMMIT TRANSACTION

根据教程,为了保持2个表的数据一致性,查询中应该有“If check”。任何人都可以完成查询?我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我会以不同的方式实现这一点:

IF ((SELECT (A.CREDIT_LIMIT - B.ORDER_TOTAL) 
       FROM CUSTOMERS A , ORDERS B 
      WHERE A.CUSTOMER_ID = 123
        AND B.CUSTOMER_ID = 123)
    ) > 0
   ) THEN
     INSERT...
END IF ;