【发布时间】:2017-05-12 22:08:40
【问题描述】:
所以我正在将节点应用程序转换为 Elixir 并且有一些我想使用 Ecto 的查询,但我还没有找到一种可行的方法,并且希望尽可能避免连接字符串和参数.
我有大约 10 个查询链接在一个事务中,看起来有点像这样:
INSERT INTO user_servers(user_id, server_id, server_type_code, position, active_flag, create_date, created_by)
SELECT ?, ?, 'SERVER', (COALESCE(MAX(position), 0) + 1), 'Y', CURRENT_TIMESTAMP, ?
FROM user_servers WHERE server_type_code = 'SERVER' and user_id = ?;
这是在事务中。
所以我的第一个问题是,因为我真的很难在 ecto 中找出正确的组合来完成这个查询。
如何在 Ecto 中使用 SELECT 子句执行 INSERT,并能够用硬编码的项目替换问号。
我正在使用雪花来创建 ID,因此将在服务器端创建这些 ID 并发送它们。
我的下一个问题是,如何将 Repo.transaction 与 multi.new 与 Raw SQL 一起使用。
【问题讨论】:
标签: mysql elixir phoenix-framework ecto