赞
踩
最全持续更新...
目录
【.】对于数据的大小写敏感问题
mysql字符串匹配默认不区分大小写
pgsql中默认区分大小写
【.】对于名称的大小写敏感问题
mysql和pg中都支持offset/limit的分页语法,但是两者有一点不同
mysql和pg一样都支持主键约束、外键约束、唯一约束、not null约束等
两者在约束方面的区别
mysql
pg
pg和mysql虽然都支持四种事务隔离级别
例如:
mysql可以发现事务回滚后t2表仍然存在,因为已经自动提交了
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t2(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t2 values(222);
Query OK, 1 row affected (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 222 |
+------+
1 row in set (0.00 sec)
pg中却没有,可以被rollback
简介
判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值;
用于查询 返回结果
简介
字段ancestors中是否存在值,相当于 like %102%,但是数据中如果存在 01020,那就出问题了
看一下pg示例,将ancestors字段按照,分割成数组。判断是否存在102
select * from sys_dept where '102' = ANY (STRING_TO_ARRAY(ancestors,','))
看一下mysql SELECT * FROM sys_dept WHERE FIND_IN_SET (102,ancestors)
mysql 勾选自增长就可以了
pgsql 选择serial 之后 默认会自动出来 保存
再打开就是这个样子
PG 使用 sql语句设置 方式
- -- 首先 创建 SEQUENCE 序列 名字一般是public.sys_user_user_id_sqe 表名 + 字段名 + sqe
- CREATE SEQUENCE public.sys_user_user_id_sqe
- AS integer
- START WITH 1 -- 开始为1
- INCREMENT BY 1 -- 增量为 1
- NO MINVALUE
- NO MAXVALUE
- CACHE 1;
-
- -- 然后 将序列 归属给 表public.sys_user 的user_id 字段
- ALTER SEQUENCE public.sys_user_user_id_sqe OWNED BY public.sys_user.user_id;
- -- 最后 设置
- ALTER TABLE ONLY public.sys_user ALTER COLUMN user_id SET DEFAULT nextval('public.sys_user_user_id_sqe'::regclass);
- ----------------------------------------------------------------------------------------
- -- 这个异常的解决方式duplicate key value violates unique constraint "sys_role_pkey"
- -- 下面是如果你之前表有数据了。然后现在你在进行自增长,插入可能会报错。就是要自增的那个数已经存在了
- -- 首先获取最大的数值进行加1
- -- SELECT setval('public.sys_user_user_id_sqe', (SELECT MAX(user_id) FROM "sys_user")+1);
- -- 将这个给自增长序列
- -- SELECT nextval('public.sys_user_user_id_sqe'::regclass)
mysql sysdate()函数,pg now()函数
pgsql:CREATE TABLE tableNameS () INHERITS tableNameP
mysql: 无
先整理现在碰到的。项目改数据库中,碰到一些问题总结。之后会把其他常见问题总结。更新中...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。