找回密码
 立即注册

QQ登录

只需一步,快速开始

金麒麟-信息部
金牌服务用户   /  发表于:2022-7-29 11:12  /   查看:1398  /  回复:6
10金币

ID是自增长,自动升成的界面ID和是不可填写的,点击添加提示错误!

INSERT INTO public.guard
(guardiccard, guardname, guardtel, guardpno, guardphoto, recordtime)
VALUES('12222222', '古月衣', '18678811111', 'P007155', '', CURRENT_TIMESTAMP);





附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,我这边测试的结果是:使用数据表操作命令(前端和服务端)会新增失败,使用SQL命令添加新行是可以成功的。 因为SQL命令比较底层,执行时效果相当于直接在数据库中运行该语句,数据表操作命令是活字格中封装的命令,不完全等效于直接在数据库中执行,猜测可能是postgre数据库有什么特殊的策略,这个问题我们也正在调查当中,有结果后会继续在帖子中跟进~ ---------------------------------------- 问题跟进: 需要使 ...

6 个回复

倒序浏览
最佳答案
最佳答案
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-7-29 11:12:31
来自 8#
本帖最后由 Chelsey.Wang 于 2022-8-1 11:57 编辑

您好,我这边测试的结果是:使用数据表操作命令(前端和服务端)会新增失败,使用SQL命令添加新行是可以成功的。


因为SQL命令比较底层,执行时效果相当于直接在数据库中运行该语句,数据表操作命令是活字格中封装的命令,不完全等效于直接在数据库中执行,猜测可能是postgre数据库有什么特殊的策略,这个问题我们也正在调查当中,有结果后会继续在帖子中跟进~
----------------------------------------
问题跟进:
需要使用IDENTITY语句创建自增列
PostgreSQL中三种自增列sequence,serial,identity区别 - MSSQL123 - 博客园 (cnblogs.com)

示例语句:
  1. CREATE TABLE COMPANY(
  2.    ID  INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY(start with 1 increment by 1 minvalue 1 maxvalue 100),
  3.    NAME           TEXT      NOT NULL,
  4.    AGE            INT       NOT NULL,
  5.    ADDRESS        CHAR(50),
  6.    SALARY         REAL
  7. );
复制代码
效果:创建下面的数据表,ID列为自增列,从1开始以1为单位递增,最小值1,最大值100





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
金麒麟-信息部
金牌服务用户   /  发表于:2022-7-29 11:47:12
3#
duxp 发表于 2022-7-29 11:26
因为你的ID列违反了非空约束,要么你设置ID列允许为空,要么你补全ID列

这是自动增长列,不用填写啊。生成的界面也不让填写。
回复 使用道具 举报
金麒麟-信息部
金牌服务用户   /  发表于:2022-7-29 14:32:27
5#
duxp 发表于 2022-7-29 11:59
pg数据库和其他数据库还是有点区别的,你认为你设置了自增,其实他不像其他数据库能自动有自增函数,要么 ...


删除了非空,ID 没了....,而且只有活字格添加的时候没有,用代码添加时有的。




CREATE SEQUENCE guard_seq START WITH 1  
INCREMENT BY 1  NO MINVALUE  NO MAXVALUE  CACHE 1;

CREATE TABLE public.guard (
        id int4 not NULL DEFAULT nextval('guard_seq'::regclass),
        guardiccard varchar(50) NULL,
        guardname varchar(50) NULL,
        guardtel varchar(50) NULL,
        guardpno varchar(50) NULL,
        guardphoto varchar(200) NULL,
        recordtime timestamp NULL DEFAULT CURRENT_TIMESTAMP
);


alter table public.guard alter id drop not null


---代码添加时有的
INSERT INTO public.guard
(guardiccard, guardname, guardtel, guardpno, guardphoto, recordtime)
VALUES('12222222', '古月衣', '18678811111', 'P007155', '', CURRENT_TIMESTAMP);




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
金麒麟-信息部
金牌服务用户   /  发表于:2022-7-29 16:59:23
7#
duxp 发表于 2022-7-29 15:53
方便上个demo吗




数据库脚本

CREATE SEQUENCE guard_seq START WITH 1  
INCREMENT BY 1  NO MINVALUE  NO MAXVALUE  CACHE 1;

CREATE TABLE public.guard (
        id int4 not NULL DEFAULT nextval('guard_seq'::regclass),
        guardiccard varchar(50) NULL,
        guardname varchar(50) NULL,
        guardtel varchar(50) NULL,
        guardpno varchar(50) NULL,
        guardphoto varchar(200) NULL,
        recordtime timestamp NULL DEFAULT CURRENT_TIMESTAMP
);


手动插入脚本
INSERT INTO public.guard
(guardiccard, guardname, guardtel, guardpno, guardphoto, recordtime)
VALUES('12222222', '古月衣', '18678811111', 'P007155', '', CURRENT_TIMESTAMP);


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2022-7-29 17:46:38
10#
好的,有结果了我们会第一时间在帖子中跟进的
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-8-1 11:56:33
11#
问题跟进:需要使用IDENTITY语句创建自增列

PostgreSQL中三种自增列sequence,serial,identity区别 - MSSQL123 - 博客园 (cnblogs.com)

示例语句:
  1. CREATE TABLE COMPANY(
  2.    ID  INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY(start with 1 increment by 1 minvalue 1 maxvalue 100),
  3.    NAME           TEXT      NOT NULL,
  4.    AGE            INT       NOT NULL,
  5.    ADDRESS        CHAR(50),
  6.    SALARY         REAL
  7. );
复制代码
效果:创建下面的数据表,ID列为自增列,从1开始以1为单位递增,最小值1,最大值100


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部