首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sql删除一条记录后其他记录的id自动迁移,使id连续

在写一个应用时,有这么一个操作:客户端传过来点击的位置,进行运算后得到相应数据在数据库里的id,然后显示对应的信息。...但是在进行delete后数据显示就混乱了,发现根本原因是原本连续的数据id(例如:1、2、3、4),在sqlite的delete语句执行完后(比如说删除id为2的数据),变得不连续(1、3、4)。...删除后点击第三个数据,结果他显示成第二个,而第二个早就删除了,因此显示的信息完全混乱。...(Object[]) ids); //更新id,使id大于要删除的id的往前移动一位。...db.execSQL("update tb_diary2 set _id=_id-1 where _id > ?",(Object[] )ids); 很多网友都说这样会影响性能,应该用触发器进行操作。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL Server 返回最后插入记录的自动编号ID

    IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。...IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。 @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。...SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值 SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。...IDENT_CURRENT(‘TableName’) –返回指定表中生成的最后一个标示值 SELECT IDENT_INCR(‘TableName’)–返回指定表的标示字段增量值 SELECT...IDENT_SEED(‘TableName’)–返回指定表的标示字段种子值 返回最后插入记录的自动编号 SELECT IDENT_CURRENT(‘TableName’) 返回下一个自动编号

    2.3K40

    通过 Laravel 查询构建器实现简单的增删改查操作

    通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据表,填充好了数据,接下来,就是在 Laravel 应用中实现对数据库的增删改查了。...where id = ?', [$name, $id]); 如果更新成功,返回受影响行数,如果更新数据与原记录数据一样,则返回0,如果更新出错,则抛出 QueryException 异常。...查询记录 要查询指定数据表中的所有记录,可以通过以下方式实现: $users = DB::table('users')->get(); 该方法返回的是一个包含所有查询结果的 stdClass 集合:...上述代码返回的也是包含指定查询结果的 stdClass 集合: 有时候我们可能希望返回查询结果中的第一条记录,这可以通过将 get 方法替换为 first 方法来实现: $user = DB::table...(); 同样,我们通过 where 方法指定删除 id >= 11 的记录,delete 方法返回受影响行数,具体逻辑和原生删除语句也是一样的。

    4.2K20

    通过 Laravel Eloquent 模型实现批量赋值和软删除

    ()); 这样一来,不管多少字段,一条语句就搞定了全部属性的赋值。...实现原理 Eloquent 模型类为我们提供了「软删除」功能的支持。这就意味着,在 Laravel 中,我们不需要编写任何额外代码就可以实现对数据库记录的「软删除」。...要软删除一条记录,在对应模型类实例上调用 delete 方法即可,底层会自动将数据表的 deleted_at 字段设置为当前时间,表示该记录已经被「删除」。...()) { dump('该记录已删除'); } 此时再查询 id=32 的记录,已经不存在了,报 404 异常。...如果想要在查询结果中出现软删除记录,可以通过在查询的时候调用 withTrashed 方法实现: $post = Post::withTrashed()->find(32); 返回结果和正常查询结果一样

    2.5K10

    PHP-Laravel(DB类操作数据库)

    2、增加信息(insert) 对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()和insertGetId() insert(数组)可以同时添加一条或多条,返回值是布尔类型。...insertGetId(一维数组),只能添加一条数据,返回自增的id。...①Update方法表示可以修改整个记录中的全部字段; ②Increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加; 案例:把id=1的名称,改名为...注意:Get查询的结果每一行的记录是对象的形式,不是数组。 案例2:获取id的数据 ->where()->get(); 案例3:查询id>2且年龄<21 ?...; truncate表示清空整个数据表; DB::table(‘table_name’)->where(‘id’,‘1’)->delete(); 例如:删除id小于3的记录 【补充:truncate】

    3.8K20

    通过 Laravel Eloquent 模型实现简单增删改查操作

    一个 Eloquent 模型类映射一张数据表,通过模型类提供的方法,你可以获取其映射的数据表的所有记录,也可以获取单条记录,还可以创建、更新和删除对应数据表记录,而这一切都不需要你编写任何 SQL 语句...: $user = User::findOrFail(111); 如果 id=111 的记录在 users 数据表中不存在,就会返回 404 响应: ?...')->max('id'); # 最大值 你会发现,如果你掌握了查询构建器,就等同于掌握了 Laravel 中的所有数据库查询操作。...执行上面的代码就会在数据库新增一条记录(我们在 Tinker 中执行上述代码): ? 我们先要创建一个新的 Post 模型实例,然后依次设置需要设置的字段,最后调用 save 方法保存即可。...$post->delete(); 这样,就完成了 id = 31 对应数据表记录的删除,你还可以通过 Eloquent 提供的 destroy 方法一次删除多条记录,通过数组传递多个主键 ID 即可

    8K20

    orm 系列 之 Eloquent演化历程2

    ,也是laravel中一大亮点Artisan,Artisan是 Laravel 自带的命令行接口名称,此处不做具体的介绍了,有机会再细说的,当我们在命令行中执行php artisan command的时候...,然后产生文件,然后还有一个比较有意思的是DatabaseMigrationRepository类,其作用是:我们需要记录migration哪些已经做了,哪些还没有做,这些记录方式我们通过DatabaseMigrationRepository...来实现,最终是通过将执行记录以log的形式插入到数据库中。...commentable_id列对应 Post 或Video 的 ID 值,而 commentable_type 列对应所属模型的类名。...当访问 commentable 关联时,ORM 根据commentable_type 字段来判断所属模型的类型并返回相应模型实例。

    2.4K30

    Laravel5.2之Demo1——URL生成和存储

    (0);语句,删除原来的'id'和timestamps邮戳语句,再执行php artisan migrate迁移命令。...部分主要处理当验证通过后,主要实现以下逻辑: 检查link链接是否已经在数据表里 如果link链接已经在数据表里,返回该短连接 如果link链接不在数据表里,那就为该链接创建一个hash字段...根据提供数据在数据表里插入一个记录record 返回该链接给用户(1).使用Query Builder的where()方法,并传入Input::get('link')参数验证数据表里是否已经有该链接...;//根据输入的link做hash哈希就行或者别的更简短的输入值 } (4).向link数据表里插入一个新的记录record: else{ $newHash = Hash::make(Input..., 'hash' => $newHash ]); } 使用Link模型的create()方法创建一条record,或者: $link = new Link();

    24.1K31

    30分钟用Laravel实现一个博客

    主要解释一下 migrations 表: 这是一个记录你的迁移文件名称和批次的表。...它的主要作用是通过记录批次,方便你对数据库进行版本控制:打开 migrations表,你会发现,当前记录了4张表的迁移文件名,而他们的batch都是1,你可以理解为当前数据库是第一批,版本1。...第二阶段总结 我们使用一条命令就实现了用户操作的相关功能。 但是这条命令生成的视图是英文的,所以需要我们改成中文。...Policy策略进行权限认证 // 这里我们就使用判断当前用户在数据表中信息的主键id是不是1即可(因为我们在Seeder里面把编号为1的用户设置为了可用的管理员账号) // 1、在代码开头引用 Auth...我们最后增加了一个简单的权限认证,判断进行增删改的用户是不是管理员,不是管理员则不允许操作,直接装载一条错误提示闪存,然后返回。

    7.4K00

    Laravel 7 新特性-路由的趟坑之路(自定义键名以及作用域)

    Laravel 7 开始新增了一些新特性,今天我们来讲解下 路由绑定的新用法,自定义键名(slug)以及作用域(范围限定) 首先我们 安装最新版本的 Laravel ,并且创建两张数据表。...自定义键 首先我们来说一下自定义键是个什么东西,你可能知道,我们如果要查找一个数据,比如,我们要查询 Posts 文章表里的第一条数据。...我们的以前的 URL 可能是如下这样: http://laravel7.test/posts/posts/1 我们是通过主键 ID 来进行查找的。...假如我们查找文章 id 为 1,同时 他的 user_id 是 2, 那么访问的路由就是 http://laravel7.test/api/users/2/posts/1 ?...http://laravel7.test/api/users/2/posts/2 然而实际情况确 并非如此。数据也是返回来了。 ? 文档上就是这样呀?就是改变路由文件而已,照着做了,发现并不可以。

    2.5K10

    HBase客户端API-Batch操作

    上一篇博客说了使用 HBase 的客户端 API 来操作操作 HBase 表中记录,今天我们看看怎样通过 API 来批量操作表中的数据。...安装上一篇博客中的方法在 HBase 中如果更新(添加/修改/删除)记录,是按行一条一条更新的,这种方法在处理大量更新操作时,性能比较差,还好在 HBase 中提供了以 Batch 方式来批量更新数据表的方法...下面就看看怎样通过 Table.batch() 方法来批量更新 要使用 Table 的 batch 模式批量更新,我们需要创建一个Put操作的集合,同时提供和一个和Put操作集合长度相等的Object对象数组...i = 0; i < 10000; i++) { Put put = new Put(Bytes.toBytes("row_" + i)); put.addColumn...COLUMN_FAMILY_BASE), Bytes.toBytes(COLUMN_PASSWORD), Bytes.toBytes("password_" + i)); put.addColumn

    2.7K50

    Yii2之数据库迁移(Migrate)

    因为一个数据库结构发生改变的时候源代码也经常会需要做出改变,Yii 提供了一个 数据库迁移 功能,该功能可以记录数据库的变化, 以便使数据库和源代码一起受版本控制。...'test_table', [ //`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 'id' => $this...如下是所有这些数据库访问方法的列表: yii\db\Migration::execute(): 执行一条 SQL 语句 yii\db\Migration::insert(): 插入单行数据 yii\db...yii\db\Migration::addColumn(): 加一个字段 yii\db\Migration::renameColumn(): 重命名字段名称 yii\db\Migration::dropColumn...数据库中会出现一个叫做migration的表,用来记录迁移记录,如图: ? 选中的就是当前迁移操作生成的记录。 会生成一个数据表test_table并且插入一条数据。 ?

    1.7K41

    Laravel中简单使用队列加快访问速度

    前言 Laravel 队列服务为各种不同的后台队列提供了统一的 API 允许推迟耗时任务(例如发送邮件)的执行,从而大幅提高 web 请求速度 总而言之,队列就是在后台执行一些耗时的任务,从而让前台访问速度加快...以上是队列所需数据表 php artisan queue:failed-table ? 以上是队列任务运行失败的记录表 多了两张表,好了,不用管了。 ?...; } 这里就记录一条日志就行 如果有额外的参数需要填写,那么就在构造方法里面传入即可。 ?...所以,laravel完全不适合在虚拟机里面运行,无论从composer包的安装还是其他方面来说。...:forget 2 此处的 2 失败任务表中的任务的 id, 表示清除指定id失败任务 清除所有失败的任务 php artisan queue:flush

    1.6K00

    通过填充器快速填充 Laravel 测试数据

    在 Laravel 框架中,如果想要快速填充测试数据到数据库,可以借助框架提供的填充器功能,通过填充器,我们可以非常方便地为不同数据表快速填充测试数据。...填充器的运行 Laravel 提供了两种方式来运行填充器:一种是独立的填充命令,另一种是在运行迁移命令时通过指定标识选项在创建数据表时填充。...然后运行如下 Artisan 命令即可: php artisan db:seed 这样,就可以在数据表 users 中看到新填充的用户记录了: 当然,我们可以在 UsersTableSeeder 类中定义多条插入语句来一次性插入多条记录...通过模型工厂填充数据 以上编写填充器类填充数据到数据库虽然已经很方便了,但是每次插入一条记录都要编写一条语句或者手动指定插入数据,如果需要填充的测试数据有成千上万条,那不是要崩溃掉。...比如我们还是通过运行 php artisan db:seed 命令来填充数据到数据库,此时,就可以看到新填充了 5 条记录: 注:本教程都以 Laravel 自带的 users 及对应 User 模型类为例进行演示

    10.1K20
    领券