# Functions
AIName 生成 AI 约束名称
自增约束的实现,各个数据库并不相同,诸如 mysql 直接加在列信息上, 而 postgres 会创建 sequence,需要指定 sequence 名称。
参数 table 必须是完整的表名,如果有表名前缀,也需要带上。.
ErrConstraintExists 返回约束名已经存在的错误.
GetPrimitiveType 获取 t 所关联的 PrimitiveType 值
如果 t.Kind == Ptr,则需要用户自行处理获取其对象的类型,否则返回 Auto。.
NewBuilder 声明一个新的 Builder 实例.
NewColumn 从 Go 类型中生成 Column.
NewModel 初始化 Model
cap 表示列的数量,如果指定了,可以提前分配内存。.
NewStmt 声明 Stmt 实例
如果 orders 为空,则 Stmt 的表现和 sql.Stmt 是完全相同的, 如果不为空,则可以处理 sql.NamedArg 类型的参数。.
PKName 生成主键约束的名称
各个数据库对主键约束的规定并不统一,mysql 会忽略约束名, 为了统一,主键约束的名称统一由此函数生成,用户不能另外指定。
参数 table 必须是完整的表名,如果有表名前缀,也需要带上。.
# Constants
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
自增.
Check 约束.
外键约束.
约束类型
以下定义了一些常用的约束类型,但是并不是所有的数据都支持这些约束类型, 比如 mysql<8.0.16 和 mariadb<10.2.1 不支持 check 约束。.
主键约束.
唯一约束.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
普通的索引.
唯一索引.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
作用于表名,列名等非关键字上的引号占位符。 在 Dialect.Fix 中会自动替换成该数据相应的符号。.
作用于表名,列名等非关键字上的引号占位符。 在 Dialect.Fix 中会自动替换成该数据相应的符号。.
所有的 PrimitiveType.
目前支持的数据模型类别
Table 表示为一张普通的数据表,默认的模型即为 Table; 如果实现了 Viewer 接口,则该模型改变视图类型,即 View。
两者的创建方式稍微有点不同: Table 类型创建时,会采用列、约束和索引等信息创建表; 而 View 创建时,只使用了 Viewer 接口返回的 Select 语句作为内容生成语句,像约束等信息,仅作为查询时的依据, 当然 select 语句中的列需要和 Columns 中的列要相对应, 否则可能出错。
在视图类型中,唯一约束、主键约束、自增约束依然是可以定义的, 虽然不会呈现在视图中,但是在查询时,可作为 orm 的一个判断依据。.
作用于表名,列名等非关键字上的引号占位符。 在 Dialect.Fix 中会自动替换成该数据相应的符号。.
所有的 PrimitiveType.
TimeFormatLayout 时间如果需要转换成字符串采用此格式.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
所有的 PrimitiveType.
目前支持的数据模型类别
Table 表示为一张普通的数据表,默认的模型即为 Table; 如果实现了 Viewer 接口,则该模型改变视图类型,即 View。
两者的创建方式稍微有点不同: Table 类型创建时,会采用列、约束和索引等信息创建表; 而 View 创建时,只使用了 Viewer 接口返回的 Select 语句作为内容生成语句,像约束等信息,仅作为查询时的依据, 当然 select 语句中的列需要和 Columns 中的列要相对应, 否则可能出错。
在视图类型中,唯一约束、主键约束、自增约束依然是可以定义的, 虽然不会呈现在视图中,但是在查询时,可作为 orm 的一个判断依据。.
# Variables
ErrAutoIncrementPrimaryKeyConflict 自增和主键不能同时存在
当添加自增时,会自动将其转换为主键,如果此时已经已经存在主键,则会报此错误。.
ErrColumnMustNumber 列的类型错误
部分列对其类型有要求,比如自增列和被定义为乐观锁的锁, 其类型必须为数值类型,否则将返回此错误。.
ErrInvalidColumnType 无效的列类型
作为列类型,该数据类型必须是可序列化的。 像 reflect.Func 和 reflect.Chan 等都将返回该错误。.
# Structs
Builder 用于构建 SQL 语句
出错时,错误信息会缓存,并在 String 和 Bytes 时返回, 或是通过 Err() 查看是否存在错误。.
Column 列结构.
No description provided by the author
No description provided by the author
Stmt 实现自定义的 Stmt 实例
功能与 sql.Stmt 完全相同,但是实现了对 sql.NamedArgs 的支持。.
# Interfaces
No description provided by the author
DefaultParser 提供了 ParseDefault 函数
在 struct tag 中可以通过 default 指定默认值, 该值的表示可能与数据库中的表示不尽相同, 所以自定义的数据类型,需要实现该接口,以便能正确转换成该类型的值。
如果用户不提供该接口实现,那么默认情况下, 系统会采用 github.com/issue9/conv.Value() 函数作默认转换。.
Dialect 用于描述与数据库和驱动相关的一些特性
Dialect 的实现者除了要实现 Dialect 之外, 还需要根据数据库的支持情况实现 sqlbuilder 下的部分 *Hooker 接口。.
Engine 数据库执行的基本接口
orm.DB 和 orm.Tx 应该实现此接口。.
PrimitiveTyper 提供了 PrimitiveType 方法
如果用户需要将自定义类型写入数据,需要提供该类型所表示的 PrimitiveType 值, 最终会以该类型的值写入数据库。
NOTE: 最简单的方法是复用 driver.Valuer 接口,从其返回值中获取类型信息, 但是该接口有可能返回 nil 值,无法确定类型。.
No description provided by the author
No description provided by the author
# Type aliases
Constraint 表示约束类型.
Index 索引的类型.
No description provided by the author
PrimitiveType 表示 Dialect 支持的数据类型
所有 Go 对象需要指定一种类型作为其在数据库中的存储方式, 内置的 Go 类型除去 complex 之外将作为相应在的定义,可通过 GetPrimitiveType 获取。
Dialect 的实现者也需要在 SQLType 中实现对所有 PrimitiveType 在数据库中的真实类型。.