sqlite_orm sync_schema源码即翻译

源码

            /***  This is a cute function used to replace migration up/down functionality.*  It performs check storage schema with actual db schema and:*  * if there are excess tables exist in db they are ignored (not dropped)*  * every table from storage is compared with it's db analog and*      * if table doesn't exist it is being created*      * if table exists its colums are being compared with table_info from db and*          * if there are columns in db that do not exist in storage (excess) table will be dropped and* recreated*          * if there are columns in storage that do not exist in db they will be added using `ALTER TABLE* ... ADD COLUMN ...' command*          * if there is any column existing in both db and storage but differs by any of* properties/constraints (type, pk, notnull, dflt_value) table will be dropped and recreated Be aware that* `sync_schema` doesn't guarantee that data will not be dropped. It guarantees only that it will make db* schema the same as you specified in `make_storage` function call. A good point is that if you have no db* file at all it will be created and all tables also will be created with exact tables and columns you* specified in `make_storage`, `make_table` and `make_column` call. The best practice is to call this* function right after storage creation.*  @param preserve affects on function behaviour in case it is needed to remove a column. If it is `false`* so table will be dropped if there is column to remove, if `true` -  table is being copied into another* table, dropped and copied table is renamed with source table name. Warning: sync_schema doesn't check* foreign keys cause it is unable to do so in sqlite3. If you know how to get foreign key info please* submit an issue https://github.com/fnc12/sqlite_orm/issues*  @return std::map with std::string key equal table name and `sync_schema_result` as value.* `sync_schema_result` is a enum value that stores table state after syncing a schema. `sync_schema_result`* can be printed out on std::ostream with `operator<<`.*/std::map<std::string, sync_schema_result> sync_schema(bool preserve = false) {auto con = this->get_connection();std::map<std::string, sync_schema_result> result;auto db = con.get();this->impl.for_each([&result, db, preserve, this](auto &tableImpl) {auto res = this->sync_table(tableImpl, db, preserve);result.insert({tableImpl.table.name, res});});return result;}

翻译

            /*** 这是个可爱的功能,用来替代上/下迁移功能。它用实际的db模式来检查存储模式,并且 * * 如果db中存在多余的表,它们会被忽略(不被丢弃)。* 如果数据库中存在多余的表,它们将被忽略(而不是丢弃)。* *存储的每一个表都与它的db模拟表进行比较,然后再进行比较。* * 如果表不存在,则正在创建。* * 如果表存在,它的列与来自db的table_info进行比较,然后再进行比较。* *如果db中的列在存储中不存在(多余的)表将会被删除,并被删除。* 重现的* * 如果存储中的列在db中不存在,将使用`ALTER TABLE'添加。* ... ADD COLUMN ...' 命令* *如果db和存储中都有任何一列,但因任何一个不同而不同。* 属性/约束(type, pk, notnull, dflt_value)表将被删除并重新创建。* `sync_schema`并不能保证数据不会被丢弃。它只保证它将使db* 模式与你在`make_storage`函数调用中指定的模式相同。一个很好的观点是,如果你没有db_storage* 文件将被创建,所有的表也将被创建为与你的表和列完全一致的表和列。* 在 "make_storage"、"make_table "和 "make_column "调用中指定。最好的做法是调用这个* 在创建存储后立即执行函数。* @param preserve在需要删除一列时影响函数的行为。如果是`false`,则会影响函数的行为。* 因此,如果有列要删除,表将被删除,如果`true`----表被复制到另一个表中。* 表,删除和复制的表用源表名重命名。警告: sync_schema不检查* 外键的原因是在sqlite3中无法做到。如果你知道如何获取外键信息,请告诉我* 提交一个问题https://github.com/fnc12/sqlite_orm/issues* @return std::map with std::string key equal table name and `sync_schema_result` as value.* `sync_schema_result`是一个枚举值,用于存储同步模式后表的状态。`sync_schema_result`是同步模式后存储表状态的枚举值。* 可以用`operator<<`在std::ostream上打印出来。*/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓布局UI简介

安卓UI 用户界面UI&#xff08;使用者界面&#xff09; ——系统和用户之间进行交互和信息交换的媒体 由布局和组件组成 软件设计&#xff1a;编码设计和UI设计 布局 ——可定义应用中的界面结构 所有元素都使用View和Viewgroup对象的层次结构进行构建 view微件——构建用户…

Windows查找JDK的路径

第一步&#xff1a;确定是否安装JDK 在控制台输入&#xff1a; java -version输出结果&#xff1a; 此时说明你电脑安装了JDK。 第二步&#xff1a;查找路径 然后在控制台输入&#xff1a; java -verbose输出结果&#xff1a; 从最后的jre目录可以找到相应的jdk目录。 …

boost官方文档同步机制Synchronization mechanisms overview

参考链接 官方文档 Synchronization mechanisms overview Named And Anonymous Synchronization MechanismsTypes Of Synchronization Mechanisms如前所述&#xff0c;如果不能有效地同步对内存的访问&#xff0c;那么通过内存映射文件或共享内存对象在进程之间共享内存的能力…

安卓布局中xml文件属性和ID简介

编写xml属性 加载xml资源 当编译应用时&#xff0c;系统会将每个xml文件编译为view资源 属性 xml属性&#xff1a;特有属性&#xff0c;共有属性&#xff0c;其他属性&#xff08;布局参数&#xff09; ID ——在结构树中对view对象唯一标识 编译应用后&#xff0c;系统以…

Java监控工具VisualVM

目录一、简介二、内存分析1、Heap堆三、CPU分析四、线程分析一、简介 VisualVM 是一款免费的&#xff0c;集成了多个JDK命令行工具的可视化工具&#xff0c;它能为您提供强大的分析能力&#xff0c;对Java应用程序做 性能分析和调优 。这些功能包括 生成和分析海量数据、跟踪内…

对官方Mutexes的翻译

参考链接 参考链接 Mutexes Whats A Mutex?Mutex OperationsBoost.Interprocess Mutex Types And HeadersScoped lockAnonymous mutex exampleNamed mutex example Whats A Mutex? 互斥是相互排斥的意思&#xff0c;它是进程之间最基本的同步形式。互斥保证只有一个线程可…

计算机应用基础

计算概论知识点 1.计算机之父&#xff1a;冯.诺伊曼 计算机基本组成&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备 2.几种计算机&#xff1a;台式计算机,笔记本式计算机,PC服务器,平板式计算机… 3.电脑的硬件&#xff1a;…

Android最全UI库合集

目录抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar选择器(Picker)跑马灯日历时间主题样式ImageView通知聊天…

对于boost锁机制结论性的介绍

Conditions Whats A Condition Variable?Boost.Interprocess Condition Types And HeadersAnonymous condition example Whats A Condition Variable? 在前面的例子中&#xff0c;一个mutex被用来锁定&#xff0c;但我们不能用它来有效地等待&#xff0c;直到满足继续的条件…

C++数据类型

C 数据类型 |–基本数据类型: 整型 short短整型 2 int基本整型4 long长整型 8 浮点型 float单精度型 4 double双精度型 8 long double长双精度型 16 字符型 char 1 逻辑型 bool 1 空类型 void |–构造类型 数组类型 构造体类型 struct 共用体类型 union 枚举类型 enum 类类型…

Android Gradle 多渠道打包、动态配置AppName

目录一、简介二、Gradle多渠道打包1、普通做法2、Gradle多渠道打包一、简介 因为国内Android应用分发市场的现状&#xff0c;我们在发布APP时&#xff0c;一般需要生成多个渠道包&#xff0c;上传到不同的应用市场。这些渠道包需要包含不同的渠道信息&#xff0c;在APP和后台交…

boost锁机制中Semaphores的介绍

结构 Whats A Semaphore?Boost.Interprocess Semaphore Types And HeadersAnonymous semaphore example Whats A Semaphore? 旗语是一种基于内部计数的进程间同步机制&#xff0c;它提供了两种基本操作。等待&#xff1a;测试旗语数的值&#xff0c;如果小于或等于0&#x…

Android Gradle 批量修改生成的apk文件名

目录一、简介二、代码实现1、 Gradle 3.0以下版本2、Gradle 3.0以上版本一、简介 平时开发都知道&#xff0c;我们要上线的时候需要在Android studio打包apk文件&#xff0c;可是默认的打包名是app-release.apk或者app-debug.apk这样的名字&#xff0c;太没有辨识度了。 下面…

C++boost Class named_condition翻译

Class named_condition boost::interprocess::named_condition 简介 // In header: <boost/interprocess/sync/named_condition.hpp>class named_condition { public:// construct/copy/destructnamed_condition(create_only_t, const char *, const permissions &…

Android Studio 代理设置以及代理完全清除

目录一、代理设置二、代理完全清除一、代理设置 首先我们来看下怎样设置代理&#xff0c;Mac下打开【Preferences…】&#xff0c;然后搜索"HTTP"&#xff0c;选择【HTTP Proxy】&#xff0c;按图中设置配置好后&#xff0c;点击【Apply】&#xff0c;然后在点击【O…

安卓布局位置,dp与px的区别

手机6寸—指对角线 布局位置 横轴—x轴 纵轴—y轴 一个像素点 dp与Px dp:设备无关像素,与像素密度相关,像素距离 dpi:像素密度,每英寸包含的像素数 px:屏幕上一个物理像素点 ldpi低密度 1dp0.75px mdpi中密度 1dp1px hdpi高密度 1dp1.5px xhdpi超高密度 1dp2px xxhdpi超…

Android Studio 快捷键大全(Mac系统)

目录一、Mac上的按键符号二、快捷键查找/查看相关控制操作相关代码重构相关一、Mac上的按键符号 符号说明⌥option / alt⇧shift⌃control⌘command⎋esc 二、快捷键 查找/查看相关 快捷键说明双击 shift搜索任意内容command F / command R当前文件查找/替换&#xff0c;使…

ubuntu下clion软件连接boost库文件

整体配置 cmake_minimum_required(VERSION 3.17) project(mutex_learn)set(CMAKE_CXX_STANDARD 14) #boost库所在的根目录set(BOOST_ROOT "/usr/local/include/boost") #添加头文件搜索路径 include_directories(/usr/local/include) #添加库文件搜索路径 link_dir…

Android程序结构

Project方式 .gradle文件夹:编译相关生成 .idea文件夹:idea生成 app文件夹----应用程序的源代码和资源 build----编译后的文件存放的位置,最终apk文件存放的位置 libs:存放.jar和.so文件 src:AndroidTest与test存放测试相关的内容 main中Java文件夹存放Java源码,res文件…