标签: transactions

sendTransaction 的值格式有问题

我对 MetaMask 中的交易有一个关于值格式的问题,我将代码放在下面:

<script type="text/javascript">

    const sendEthButton = document.querySelector('.sendEthButton');

    sendEthButton.addEventListener('click', () => {
      ethereum
        .request({
          method: 'eth_sendTransaction',
          params: [
            {
              from: ethereum.selectedAddress,
              to: '{{contractCreator}}',
              value: '0x29a2241af62c0000',
            },
          ],
        })
        .then((txHash) => console.log(txHash))
        .catch((error) => console.error);
    });

</script>
Run Code Online (Sandbox Code Playgroud)

我已将 MetaMask 正确连接到网站和 Ganache,当我按下页面中的按钮时,交易也会出现在插件中,但只有在代码中使用此值时,我才能看到正确的值 (3),但我不知道如何是格式化。

我尝试过 web3.toWei(number, 'ether') 和 web3.toHex(number) 但它显示了奇怪的值。

例如,如果我用 web3.toWei(1, ether) 替换该值,它会在 MetaMask 窗口中显示 4722.366483。

javascript transactions ethereum web3js metamask

1
推荐指数
1
解决办法
1071
查看次数

使用事务时关闭连接

我有以下使用事务的方法。

private string getDocumentDetailsByNumber(string DocNumber)
    {
       SqlTransaction transaction = DALDBConnection.SqlConnection.BeginTransaction();

            try
            {
                DataSet DocNum = new DataSet();

                string sDocNumber = "";
                string[] taleNamesDoc = new string[1];
                taleNamesDoc[0] = "docnumber";
                SqlParameter[] paramDoc = new SqlParameter[1];
                paramDoc[0] = new SqlParameter("@DocumentNumber", DocNumber.ToString().Trim());

                SqlHelper.FillDataset(transaction, CommandType.StoredProcedure, "spGetDocumentDetailsByNumber", DocNum, taleNamesDoc, paramDoc);
                string docTitle = DocNum.Tables["docnumber"].Rows[0][0].ToString();


                transaction.Commit();

                return docTitle;
            }
            catch (Exception ex)
            {

                transaction.Rollback();
                throw ex;
            }

    }
Run Code Online (Sandbox Code Playgroud)

多次运行该方法后,用户最终收到以下错误消息。

在从池中获取连接之前经过的超时时间

发生错误是因为我尚未关闭连接并且连接池已溢出。

我尝试在提交事务之前关闭连接。

transaction.Connection.Close();  
transaction.Commit();
Run Code Online (Sandbox Code Playgroud)

然后得到以下错误。

这个SqlTransaction已经完成;它不再可用

如何关闭连接以避免错误?

c# asp.net asp.net-mvc transactions

0
推荐指数
2
解决办法
1万
查看次数

我的sql事务将1000从一个帐户转移到单个表帐户中的另一个帐户(名称,余额)

我的 SQL 事务将 1000 从一个帐户转移到单个表帐户中的另一个帐户(名称,余额)?

我写了下面的查询,我不知道如何检查条件。

START TRANSACTION

UPDATE account SET balance = balance - 100 WHERE name = 'D'

UPDATE account SET balance = balance + 100 WHERE name = 'A'

COMMIT
Run Code Online (Sandbox Code Playgroud)

如何在转账前检查足够金额的条件?

mysql transactions

0
推荐指数
1
解决办法
5010
查看次数

如何在 SQL Server 中禁用对表的锁定?

我需要存储数据,其生命周期在大多数情况下应该是 1-30 分钟(但仍然可以是 1 天/1 周)。这只是一个特定的项目 - 由许多用户执行的大量批量操作。

因此,处理这些数据的典型过程:

  1. 用户上传一个文档,我们解析它并将数据推送到表中(插入 100-70000 行)
  2. 我们验证数据并向用户显示错误
  3. 用户更正数据(单次更正 - 更新 1 行)
  4. 用户运行一个操作,之后从表中删除所有上传的文档数据。

当只有单个用户使用系统时,这很好用。当许多用户上传产生大约 1-5 千行的文档时,这很有效。但是在插入 10,000 行后,SQL Server 会强制锁定表……这是一个问题。

所以,有不同的方法来解决这个问题,但它们都是丑陋的:

  1. 切换到键值存储 - 客户不同意使用其他存储
  2. 由于多种原因无法切换到内存解决方案
  3. 将插入组插入 2 千行并为每个指定不同的事务并手动处理失败 - 太丑了

我接下来要:关闭对指定表的任何锁定。不需要一致性,只有索引应该工作。

我怎么能做到这一点?任何其他想法也受到赞赏。

sql t-sql sql-server locking transactions

0
推荐指数
1
解决办法
1万
查看次数

oracle创建全局临时表

我遇到过并行运行许多访问同一个表的程序的情况。当我尝试并行运行这些程序时,我可以看到很少有程序抛出错误ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired。这些表是临时表,我首先删除旧数据然后插入。并再次为下一个程序运行做同样的事情。所以在这种情况下,我遇到了多个过程尝试访问同一个表并尝试执行 DML 操作的情况。我有针对这种情况创建全局临时表的解决方案:

CRATE GLOBAL TEMPORARY TABLE TEMP_ACTIVATE_OPTION(
  ID   NUMBER,
  ... -- your columns
)
ON COMMIT DELETE ROWS; 
Run Code Online (Sandbox Code Playgroud)

但由于我是这个解决方案的新手,我真的不知道它是如何工作的。例如,如果一个过程正在运行并尝试访问该表TEMP_ACTIVATE_OPTION以进行 DML 操作,而另一个过程并行运行并尝试访问同一个表TEMP_ACTIVATE_OPTION进行 DML 操作,那么是否有可能发生数据丢失或冲突?全局临时表如何管理会话或事务?如果过程尝试对该表执行 dml 操作并等待释放表上的锁以便另一个过程可以访问同一个表,它是否对表执行锁定?

PROCEDURE                    "EXT_10024_ACTIVATE_OPTION"(IN_KPI_DEF_ID IN NUMBER DEFAULT 0) AS

IN_EVENT_ID NUMBER;
err_code VARCHAR(100);
err_msg VARCHAR(100);
IN_OBJECT_NAME VARCHAR2(100);

CURSOR KPI_DEF_CUR IS
Select KPI_DEF_ID,BUSINESS_CHECK_PERIOD_ID,BUS_CHK_PRD_ID_1,
CASE WHEN BUSINESS_CHECK_PERIOD_UNIT_ID=11 THEN 'MINUTE'
WHEN BUSINESS_CHECK_PERIOD_UNIT_ID=12 THEN 'HOUR'
WHEN BUSINESS_CHECK_PERIOD_UNIT_ID=13 THEN 'DAY'
WHEN BUSINESS_CHECK_PERIOD_UNIT_ID IS NULL THEN …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures locking transactions

0
推荐指数
1
解决办法
1816
查看次数

如何在存储过程中提交事务之前锁定 Sql Server 中的选定行

我想用 SP 中的 SELECT 语句锁定表中的一些行。我的 SP 中有交易。我想在 BEGIN TRANSACTION 之后锁定我选择的所有行。所以,我想在 COMMIT/ROLLBACK 之后释放这些行。

我尝试过 XLOCK、UPDLOCK、HOLDLOCK,但它们都没有达到我的预期。

这是我的示例代码...

BEGIN TRANSACTION 
    -- I WANT TO LOCK EMPLOYEES LIVE IN ISTANBULL
    SELECT ID FROM EMPLOYEES WITH(XLOCK) WHERE CITY='ISTANBUL'
    ....
    ....
    ....
COMMIT
-- LOCKED ROWS SHOULD BE RELEASED AFTER COMMIT.
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

sql sql-server stored-procedures transactions

0
推荐指数
1
解决办法
5462
查看次数

如何在 Laravel 5.3 中回滚事务?

我正在尝试使用 Laravel 5.3 创建一个演示 crud。我写了一个控制器的方法来处理更新。此方法应始终启动事务,并始终回滚更改。所以更改永远不会提交到数据库中。

这是我的方法的样子

public function update($id, Request $request)
{
    DB::beginTransaction();
    $this->affirm($request);
    $biography = Biography::findOrFail($id);
    $data = $request->all();
    $biography->update($data);

    Session::flash('success_message', 'Biography was updated! However, because this is a demo the records are not persisted to the database.');
    DB::rollBack();

    return redirect()->route('demo.index');
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,更新仍然每次都会提交。如何正确开始事务然后回滚更改?

php transactions laravel

0
推荐指数
1
解决办法
1万
查看次数

我想从 @Transactional 中忽略特定实体(使用 Spring/Hibernate)

我运行了一个 SpringMVC 应用程序,并且我将 @Transactional 注释与 HibernateTransactionManager 结合使用。

结果,在我的应用程序中我抛出 RuntimeException 的任何地方,我们都会回滚 - 这太棒了!一切正常。

但现在我想从 Transactionality 中排除一个 Entity。这个实体代表我想要持久化的东西(基准/日志/错误),即使(特别是如果)有一个 RuntimeException 标记了回滚的其他一切。

我宁愿不必从开始和结束事务的拦截器外部调用某个存储库。

有没有直接的方法来实现这一点?

mysql hibernate transactions spring-mvc spring-transactions

0
推荐指数
1
解决办法
162
查看次数

如何在 Apache TomEE 中更改 EJB 事务超时?

在特殊情况下,从部署在 Apache TomEE 中的应用程序调用我的无状态 EJB 类之一可能需要很长时间,并且事务会被服务器回滚。

如何增加 Apache TomEE 中的 EJB 事务超时?

谢谢你。

ejb transactions apache-tomee jakarta-ee

0
推荐指数
1
解决办法
418
查看次数

在 google firestore 中使用交易的缺点

我正在开发 Flutter 应用程序,并且正在使用 Firebase 服务。我只想坚持使用事务,因为我更喜欢一致性而不是简单性。

await Firestore.instance.collection('user').document(id).updateData({'name': 'new name'});

await Firestore.instance.runTransaction((transaction) async {
      transaction.update(Firestore.instance.collection('user').document(id), {'name': 'new name'});
    });
Run Code Online (Sandbox Code Playgroud)

交易有任何(主要)缺点吗?例如,它们是否更贵(Firebase 计费,而不是计算)?毕竟 Firestore 数据库上的数据可能会发生更改,这将导致最多 5 次重试。

供参考:https : //firebase.google.com/docs/firestore/manage-data/transactions

“您还可以使用事务对数据进行原子更改。虽然这对于增加投票总数来说有点笨拙,但对于更复杂的更改来说这是正确的方法。”

https://codelabs.developers.google.com/codelabs/flutter-firebase/#10

transactions firebase flutter google-cloud-firestore

0
推荐指数
1
解决办法
1489
查看次数