今天主要是操作postgres数据库,验证表关系,主要测试联机删除和外键为空的情况。
数据库中建了文章表(子表)和类别表(父表),类别表的主键是文章表的外键,文章表的外键约束是联机删除,它的意思是当删除类别表的某项记录时,文章表里和此类别记录有关的记录都会被删除。逻辑好绕。
访问postgres数据库有两种方式,一种是先进入容器,然后访问。进入容器我用的是Code的Docker插件进入的。进去之后输入用户名和数据库名就进去了。
1 | psql -U vapor_username -d vapor_database |
另一种方式是用Terminal访问,也就是从容器外访问。首先安装postgres到本地。1
brew install postgresql
然后命令:1
psql -U vapor_username -d vapor_database -h localhost -p 5432
我因为以前一直开着Proxifier,导致访问5432端口都给转发给1081端口了,所以一直登陆不上,看了Proxifier中的日志才发现这个问题。
从大学毕业就没写过SQL语句了,postgres也是第一次用,测试外键费了不少功夫。如下插入的语句,因为忘记打最后面的分号,psql还在等我输入,我又输入查询语句,啥也没显示,后面查查才知道后面要带分号。1
INSERT INTO articles(id, name, body, category_id) VALUES('40e6215d-b5c6-4896-987c-f30f3678f604','hello','my name is vale','40e6215d-b5c6-4896-987c-f30f3678f604');