为了账号安全,请及时绑定邮箱和手机立即绑定

thinkphp5连接oracle用insert插入数据失败

thinkphp5连接oracle用insert插入数据失败

PHP
Smart猫小萌 2019-03-15 14:28:11
使用最新版TP5框架,insert操作失败,应该是id的问题,官方没看到关于oracle介绍,不知道该如何写,新人,求点拨,附插入mysql的代码写法,求改成oracle,(oracle建好序列号,索引) function writelog($uid,$username,$description,$status) { $data['admin_id'] = $uid; $data['admin_name'] = $username; $data['description'] = $description; $data['status'] = $status; $data['ip'] = request()->ip(); $data['add_time'] = time(); $log = Db::name('think_log')->insert($data); } 使用上述代码报错提示(主键ID没有值)
查看完整描述

4 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

oracle没有自增字段,LOG_ID字段的值必须人工赋值,人工写sql的话大概是这样的:

INSERT INTO TINK_LOG(LOG_ID) VALUES(S_T_THINK_LOG.NEXTVAL)

如果TP不支持取oracle序列的值,可以在表TINK_LOG中创建一个触发器:

create or replace trigger trg_TINK_LOG
  before insert on TINK_LOG
  for each row
declare
begin
  :new.LOG_ID:= S_T_THINK_LOG.NEXTVAL;  
end trg_t1;
查看完整回答
反对 回复 2019-03-18
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

不了解 thinkphpOracle 的结合。
楼主有没有试过这个方法:【oracle的使用】在thinkphp5中使用oracle

查看完整回答
反对 回复 2019-03-18
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

oracle主键log_id 不能自动递增
有两个办法:
1、使用oracle的自动增长序列
创建序列

create sequence S_T_THINK_LOG
increment by 1  //指定序列以1递增,如果没指定,默认值1会使用
start with 1        //由1开始计数
nomaxvalue     //不设置最大值
minvalue 1      //设置最小值1
cache 20        //预分配缓存大小为20
order
// 获取下一个自增ID
public function getNextSeq(){ 
  $sql = "select S_T_THINK_LOG.nextval id from sys.dual";
  $result = $this->query($sql); 
  $nextId = $result[0]['id'];
  return $nextId;
}

function writelog($uid,$username,$description,$status)
{
    // 注意这里啦 
    // 注意这里啦 
    $data['log_id'] = $this->getNextSeq();
    
    $data['admin_id'] = $uid;
    $data['admin_name'] = $username;
    $data['description'] = $description;
    $data['status'] = $status;
    $data['ip'] = request()->ip();
    $data['add_time'] = time();
    $log = Db::name('think_log')->insert($data);

}

第二种,就是楼上说的 触发器啦

create or replace trigger trg_TINK_LOG
  before insert on TINK_LOG
  for each row
declare
begin
  :think_log.LOG_ID:= S_T_THINK_LOG.NEXTVAL;  
end trg_t1;
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 1367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信