使用start transaction设置var mysql

时间:2017-07-10 03:41:09

标签: php mysql sql

我不熟悉数据库,这是我的测试语法:

START TRANSACTION ;
SET @VAR = (SELECT `some ID` FROM `some table` ORDER BY `some ID` DESC LIMIT 1);
SELECT @VAR;
COMMIT;
SELECT @VAR;

我认为结果是第一次选择是null(因为在提交之前)和第二次选择是有值的,而在我的测试中第一次和第二次选择有值,为什么?以及如何修复我的语法?

1 个答案:

答案 0 :(得分:2)

你好像很困惑。首先,在同一事务中可以看到事务中所做的更改。其次,事务是关于数据库的更改,而不是对会话的更改。毕竟,数据库符合ACID(或不符合ACID),而不是会话中的变量。

第一个console.log("Navbar.js Connected"); // Search Form Validate Function function searchFormValidate() { // Check is Search Input value is null, if so return false (Validation didn't pass) return $('#searchInput').val() == "" ? false : true; } // When Search Users is clicked on $('#searchForm-users').on('click', function() { $('#searchType').val('users'); $('#searchInput').attr("placeholder", "Search Users"); }); // When Another Search is clicked on $('#searchForm-another').on('click', function() { $('#searchType').val('another'); $('#searchInput').attr("placeholder", "Search Something Else"); }); // When Search is clicked Submit Form $("#searchFormSubmit").on('click', function() { if(searchFormValidate()) { document.searchForm.submit(); } else { // Right here is where the form should apply the has-error class console.log("Validation Error"); } }); 打印交易期间存在的值。交易中的变化是可见的 - 在交易中。对于表的更改也是如此。如果在表中插入一行并且 - 在同一事务中 - 查找该行,那么您将看到它。

您不应该在另一个会话中看到该行。在提交更改之前,您不会在其他地方看到它。