关系数据库公约 0.1.0
此包使客于获授之关系库,行带型参之预备句,读多行之果,并纳多写于一原子批。库名由宿主核其许。SQL 有误、参或果不可以 JSON 表、逾下限,则调用败而抛豫言之异,客可以「尝试运行」捕之;异辞须含库所报之因,使客得辨唯一约之冲等可复之情。SQL 出于客,此包不称句惟读;授此能即许客向该库陈任意 SQL,客当自守 SQL 与授权之界。只需首行与文参者,仍用[关系查询](../关系查询/规范.文言.md)。
参
参以 JSON 数组文表之,元惟字符串、绝对值不逾 2^53−1 之整数、布尔与 null,依序缚于 SQL 占位,不以拼文代缚。空数组文 [] 谓无参。小数、数组、对象之元,及非数组之文,皆使调用败;需小数者,先以字符串或整数(如微单位)表之。参之数与型不合句,由库报败。
术
取关系库首行 行句而返首行之 JSON 对象文,无行则字面 null。取关系库全部行 返诸行之 JSON 数组文,行为列名至值之对象,列序不承;果文逾八兆则败,客当以 LIMIT 自分页。库之 NULL 作 JSON null;宿主不得暗改整数为小数,亦不得失不逾 2^53−1 整数之精。
执行关系库语句 行一句而返 {"changes":所变行数,"lastRowId":末插行号};句无插入,则 lastRowId 由库定,客勿倚之。查询之句亦可行,其行则弃。
批量执行关系库语句 受 JSON 数组文,每项为 {"sql":文,"params":参数组},params 缺则为空;至多百项,空组则败。诸句于同一原子批依序行:一败则整批不生效而调用败。返等长之 JSON 数组,第 n 项为 {"changes":n,"lastRowId":n,"rows":[…]},rows 为该句所出之行,无行者给空组。批内诸句不得互读所缚之值,需相续之写,当于 SQL 内表之(子查询、触发器或 RETURNING)。
界
单 SQL 文不逾二百五十六 KiB,参数组文不逾一 MiB。事务惟批量之术供之;单句诸术之间不成事务,客不得设相邻调用之间库未为他请所改。库名不存或未获许,乃部署之误,宿主径止当前请,客不当图复。今云工适配以库名映 D1;他平台可接同类关系库,然须守整数之精与批之原子。