在postgresql中,我可以创建一个表来记录人们拥有哪种类型的车辆。
CREATE TABLE IF NOT EXISTS person_vehicle_type
( id SERIAL NOT NULL PRIMARY KEY
, name TEXT NOT NULL
, vehicle_type TEXT
);
此表可能有一些值,如
id | name | vehicle_type
----+---------+---------
1 | Joe | sedan
2 | Sue | truck
3 | Larry | motorcycle
4
我想在红移上创建一个枚举类型,但是不能。
CREATE TYPE status AS ENUM ('Yes', 'No');
错误是:
An error occurred when executing the SQL command:
CREATE TYPE status AS ENUM ('Yes', 'No')
ERROR: syntax error at or near "ENUM"
Position: 23
CREATE TYPE status AS ENUM ('Yes',
我有一个简单的PostgreSQL表,其中包含一个名为id的主键和大约20个条目。
执行以下代码需要60到70秒的时间。
DELETE FROM user WHERE id = '20'
简单的SELECT查询的执行时间不超过10ML,这已经很好了。
在DELETE查询上运行EXPLAIN时,输出如下:
"Seq Scan on user (cost=0.00..1.26 rows=1 width=6)"
" Filter: ((id)::text = '20'::text)"
我找不到任何对那些删除查询花费这么长时间的解释。
我在Postgresql中使用枚举。我在数据库中使用了一个名为“城市”的枚举。我的要求是如何使用条件语句获得枚举。我使用了查询
SELECT 'Bengaluru'::CITY as TEXT
它工作得很好,但是如果在enum中找不到文本,那么它会抛出一个错误。如何进行/更改sql查询,使其不引发错误。
我希望将父实体的子实体的某一属性之和约束为该父实体的某一属性。我想使用PostgreSQL和不使用触发器来完成这个任务。下面是一个例子;
假设我们有一个具有卷属性的板条箱。我们想用更小的盒子来填充它,它们有自己的音量属性。机箱中所有盒子的体积之和不能大于机箱的体积。
我的想法是:
CREATE TABLE crates (
crate_id int NOT NULL,
crate_volume int NOT NULL,
crate_volume_used int NOT NULL DEFAULT 0,
CONSTRAINT crates_pkey PRIMARY KEY (
我有一个名为Comment的实体,它有一个CommentType类型的enum属性
public class Comment
{
public virtual Guid Id { get; private set; }
public virtual CommentType CommentType { get; set; }
// other prop removed for simplicity
}
public enum CommentType
{
Comment,
Correction,
Improvement,
BugFix,
我正在构建一个必须在MySQL、PostgreSQL和SQLite上工作的数据库。我的一个表有一个两列主键:
CREATE TABLE tournament (
state CHAR(2) NOT NULL,
year INT NOT NULL,
etc...,
PRIMARY KEY(state, year)
);
我希望从另一个表中引用tournament表,但是希望这个引用是可空。我可以这样做,想象一个胜利者不一定会有比赛:
CREATE TABLE winner (
name VARCHAR NOT NULL,
state CHAR(
我的表中有一个枚举类型的列。我现在决定将其设置为varchar类型,并添加一些约束。
Q1),这是一个很好的实践:使用枚举或将constarint放在列上。
Q2)如何将枚举类型列更改为varchar。与这个问题相反的是。我试着使用这个:
ALTER TABLE tablename ALTER COLUMN columnname TYPE VARCHAR
但是这给了我一个错误:No operator matches the given name and argument type(s). You might need to add explicit type casts.
下面是表的定义:
我有两个表,其中一个使用外键引用另一个表。我需要知道外键的大小,不是主键本身,而是列中的条目。所以如果我们有两张桌子:
tb1
|id SERIAL PRIMARY KEY| name VARCHAR|
tb2
|id SERIAL PRIMARY KEY| info VARCHAR | tb1_id SERIAL REFERENCES tb1|
tb1_id有多大(以字节计)?它是32位像整数吗?我在PostgreSQL的规范或文档中找不到答案。
下面是我的域实体
public class User
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public DateTime? DateOfBirth { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string EmailAddr
我很少看到在野外使用ENUM数据类型;开发人员几乎总是只使用如下所示的辅助表:
CREATE TABLE officer_ranks (
id int PRIMARY KEY
,title varchar NOT NULL UNIQUE);
INSERT INTO officer_ranks VALUES (1,'2LT'),(2,'1LT'),(3,'CPT'),(4,'MAJ'),(5,'LTC'),(6,'COL'),(7,'BG'),(8,'MG'),(9,&