Oracle 查询表结构,增加、删除列,调整列字段类型、时间格式化、插入数据、update纪录、查询当前最大id、删除当前表sequence、违反唯一约束条件 ORA-00001、ORA-00904

Oracle

违反唯一约束条件 ORA-00001

原因:

手动增加记录,id大于设定sequence!

解决:

重新建表或者设置起始sequence数值(大于最大的sequence即可)!

查询表结构(建表语句)

-- Oracle 建表语句
select dbms_metadata.get_ddl('TABLE', '你的表名称') from dual;

增加列

alter table 你的表名称 add trade_no varchar2(32 byte);

删除列

-- 用戶表刪除列
alter table TB_USER drop COLUMN 列名;

修改列名称

alter table 表名rename column 旧列名 to 新列名; 

查询数据库当前时间

select to_char(sysdate, 'yyy-mm-dd hh24:mi:ss') from dual;

删除表

Drop table 你的表名称;

插入一条记录及时间格式化为24小时制

-- 申請歷史增加記錄
insert into TB_HISTORY(approve_id, cif_no, status, apply_step, operator_name, deal_date, remark, create_by,
                                   create_date, last_update_by, last_update_date)
values (2, 'lisi', 21, '提交申請', '張四', TO_DATE('2021-11-28 16:29:49', 'YYYY-MM-DD HH24:MI:SS'), '', 'lisi',
        TO_DATE('2021-11-28 16:29:49', 'YYYY-MM-DD HH24:MI:SS'), 'lisi',
        TO_DATE('2021-11-28 16:29:49', 'YYYY-MM-DD HH24:MI:SS'));

-- 24小时制
TO_DATE('2022-11-28 16:19:04', 'YYYY-MM-DD HH24:MI:SS')

以表中现有的数据增加一条记录 

-- 以表中數據為基礎新增記錄
insert into TB_EMPLOYER(EMPLOYER_ID, cif_no, status, name, type, permit_no, permit_start, permit_end, create_by, create_date, last_update_by, last_update_date, employer_no)
select 3,
       cif_no,
       status,
       name,
       type,
       permit_no,
       permit_start,
       permit_end,
       create_by,
       create_date,
       last_update_by,
       last_update_date,
       employer_no
from TB_EMPLOYER
where EMPLOYER_ID = 1;

 调整列字段类型

ALTER table 你的表名称 modify 列名称 varchar2(3 byte);

更新

update TB_USER
set USERNAME = '張四'
where CIF_NO = 'lisi';

创建表及sequence

CREATE TABLE "TB_APPROVE"
(
    "APPROVE_ID"       NUMBER(22, 0) PRIMARY KEY NOT NULL ENABLE,
    "CIF_NO"           varchar2(64 BYTE),
    "STATUS"           NUMBER(2, 0),
    "APPLY_STEP"       varchar(32),
    "OPERATOR_NAME"    VARCHAR(32),
    "DEAL_DATE"        DATE,
    "REMARK"           VARCHAR(128),
    "CREATE_BY"        varchar2(64 BYTE),
    "CREATE_DATE"      DATE,
    "LAST_UPDATE_BY"   varchar2(64 BYTE),
    "LAST_UPDATE_DATE" DATE
);

CREATE SEQUENCE "SEQ_APPROVE" MINVALUE 0 MAXVALUE 999999999 INCREMENT BY 1 START WITH 1;

删除表的sequence

DROP sequence 序列号名称;

查询表当前最大id

SELECT MAX(ID) FROM 你的表的名称;

查询下一个sequence

select seq_name.nextval from dual;

Caused by: oracle.jdbc.OracleDatabaseException: ORA-00904: "AMOUNT_TOTAL": 無效的 ID。

=======》表名称写错了、字段名称错了、表中缺失该字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值