TP+ORACLE插入数据BUG修复以及获取自增Id支持getLastInsID方法 这些天在做Api接口时候,发现用TP操作Oracle数据库,发现查询修改删除都能执行, 但一旦执行插入操作老是报错.类似问题比如: http://www.thinkphp.cn/bug/3286.html 花了点时间仔细研究一下,发现是BUG. 下面是我的解决办法: 针对版本:ThinkPHP3.2.3 BUG修复: 修改文件:Db\Driver\Oracle.class.PHP 找到 execute方法, 找…
SQL Server 表在导入数据时,有时需要将自增长列指定数值,来保证导入前后的数据完全一致,如何实现? SQL Server 提供了方法: SET IDENTITY_INSERT,允许将显式值插入表的标识列中. 参考文档:SET IDENTITY_INSERT | Miscosoft Docs 语法: SET IDENTITY_INSERT [ database_name . [ schema_name] . ] table { ON | OFF } 用法: -- SET IDENTITY_…
Sql2005中,提供了uniqueidentifier 数据类型.说白了,就是个GUID,这种类型开发时倒是很有必要的. 今天程序中遇到了这个问题:表里定义了一个uniqueidentifier 列,Asp.net程序需要向表中插入新的数据.Insert 语句由数据源控件自动生成:INSERT INTO [morning_Department] ([DepartmentId], [name]) VALUES (@DepartmentId, @name),其中DepartmentId列为一个un…
1.binlog format 启用Row Based Replication(行复制)模式: SET GLOBAL binlog_format = 'ROW'; 如果你想永久的启用这个模式,请修改my.cnf 配置文件: [mysqld] binlog_format=ROW 2.在执行你的sql语句前,设置当前会话的隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; INSERT INTO t1 SELECT ....;…
一.背景 我们在数据库表设计的时候,一般都会在表中设计一个自增的id作为表的主键.这个id也会关联到其它表的外键. 这就要求往表中插入数据时能返回表的自增id,用这个ID去给关联表的字段赋值.下面讲一下如何通过注解的方式实现插入数据时返回自增Id. 二.设计数据库表 CREATE TABLE `tbl_user` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL DEFAULT '', `age` ) ', PRIMARY KEY (`id`…
author: hiu 更正说明:今天(2014-07-07)才发现的问题,我把@Id设置在了实体类中的id中,@Id是主键,应该设置在实体类的keyjobno中,之前发的文章可能误导了大家,如今更正一下,请看以下红色的更正内容. 近期由ibatis转用Hibernate,期间遇到了一系列的问题,今天又遇到了个问题,是由于自增列的问题导致保存时报错,如今记录下来,以便日后忘记时查看 这个问题事实上是使用myEclipse生成表的实体类时,自增列的注解错误导致的. 问题原因:利用myEclipse…
删除数据后,执行下面语句: ALTER TBALE TableName AUTO_INCREMENT=1 mysql删除比较 一.DROP drop  table tablename 绝招:删除内容和定义,释放空间.简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表 二.TRUNCATE truncate table tablename 绝招:删除内容.释放空间但不删除定义(表定义和结构).与drop不同的是,他只是清空表数据而已.执行语句之后,发现数据表的结构还在,也就是不删除…
SQL Server  中数据表往往会设置自增列,常见的比如说 首列的ID列. 往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长.那么,如果我们想往自增列插入我们指定的数据时该怎么做呢?  一:建立一张简单的测试表 ,), num INT) 二:如果强行插入数据时: ,) 消息 ,级别 ,状态 ,第 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'randy_test'中的标识列指定显式值. 可以看到,数据库提示 不能给标识列指…
不同于SQL Server的是,Oracle中插入数据的时候,没有自增列或者是标识列,但是,我们又不想显式的进行主键的插入,这里,必须在Oracle数据库中指定一个标识列,或者说是一个序列.具体方法如下: 先创建一个序列,具体方法为:CREATE SEQUENCE "数据库名"."序列名" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 NOORDER: 要么写一个触发器…