You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Flutter Supabase客户端实现SELECT源数据插入操作?

解决方案

方法1:通过PostgreSQL存储过程+Flutter客户端调用

先在Supabase控制台的SQL编辑器里创建存储过程,把插入逻辑封装进去:

CREATE OR REPLACE FUNCTION transfer_widget_to_foo()
RETURNS void AS $$
BEGIN
  INSERT INTO foo (x, y)
  SELECT x, y FROM widget WHERE date > TO_DATE('12-12-2023', 'DD-MM-YYYY');
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

然后在Flutter代码里调用这个存储过程:

await supabase.rpc('transfer_widget_to_foo');

注意:SECURITY DEFINER会让函数以创建者权限执行,确保该权限能读写两个表;若不需要可去掉,改用调用者自身权限。

方法2:客户端分两步操作(查询+批量插入)

如果数据量不大,可以先拉取符合条件的数据,再批量插入:

// 第一步:查询widget表中符合条件的数据
final queryResult = await supabase
    .from('widget')
    .select('x, y')
    .gt('date', '2023-12-12'); // 建议用ISO格式日期,避免解析歧义

// 第二步:批量插入到foo表
if (queryResult.isNotEmpty) {
  await supabase.from('foo').insert(queryResult);
}

提示:如果原表的date字段存储格式是DD-MM-YYYY,可在查询时用filter配合日期转换逻辑,或提前在Supabase中调整字段的存储格式为标准ISO格式。

内容的提问来源于stack exchange,提问作者Davout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:04:53