【发布时间】:2020-05-20 16:09:39
【问题描述】:
我有三列作为 PostgreSql 数据库表中的复合主键。插入查询中将提供两列的数据。但是每次插入发生时都必须增加另一列。这是一个例子:
CREATE TABLE "food_index_directory" (
"primary_key_one" VARCHAR(6) NOT NULL,
"primary_key_two" NUMERIC(4) NOT NULL,
"primary_key_three" NUMERIC(5) NOT NULL,
"varchar_column_one" VARCHAR(30) NOT NULL,
"numeric_column_one" INTEGER NOT NULL,
"numeric_column_two" NUMERIC(12,9) DEFAULT .001 NOT NULL,
"numeric_column_three" NUMERIC(5,2),
"last_upd_date" DATE NOT NULL,
CONSTRAINT "PK_dummy_table" PRIMARY KEY ("primary_key_one","primary_key_two","primary_key_three")
);
如上所述,两个主键列和另一个 (primary_key_three) 的数据必须根据第一个和第二个键列的出现次数递增。第二个键列只能取 1 到 12 之间的值,这第三列是第二列的计数列。
例如:
primary_key_one primary_key_two primary_key_three ......
91 1 1 ......
91 1 2 ......
91 2 1 ......
91 2 2 ......
91 1 3 ......
91 2 3 ......
91 3 1 ......
91 2 4 ......
34 3 1 ......
91 1 4 ......
91 4 1 ......
91 5 1 ......
34 4 1 ......
在上面的例子中,(为了更好地理解,我留了空格,当前两列中的数据重复时),第三列计算前两列在此表中重复的次数。
在插入期间,我将为前两列提供数据,而第三列必须自动递增,如上所示和解释?我该怎么做?
【问题讨论】:
-
您可以根据需要使用触发器。
-
我不知道怎么写触发器。你能写出来并回答我的问题@AkhileshMishra 吗?
-
发布了触发器
标签: postgresql sql-insert