gpt4 book ai didi

sql - has_table 键的日期期间

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:10 25 4
gpt4 key购买 nike

我有这个模式

-- Create tables section -----------------------------------------

-- Table t1
CREATE TABLE "t1"(
"id" Serial NOT NULL,
PRIMARY KEY ("id");

-- Table t2
CREATE TABLE "t2"(
"id" Serial NOT NULL,
PRIMARY KEY ("id");

-- Table t1_has_t2
CREATE TABLE "t1_has_t2"(
"t1_id" Integer NOT NULL,
"t2_id" Integer NOT NULL,
"d_start" Date,
"d_end" Date,
PRIMARY KEY ("t1_id","t2_id"),
FOREIGN KEY ("t1_id") REFERENCES "t1" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY ("t2_id") REFERENCES "t2" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION);

我需要使用表“t1_has_t2”来保存 t1 或 t2 时间段。例如,我想将这条记录保存在表“t1_has_t2”中:

+-------+-------+------------+------------+| t1_id | t2_id | d_start    | d_end      |+-------+-------+------------+------------+| 1     | 1     | 01-01-2016 | 31-01-2016 |+-------+-------+------------+------------+| 1     | 1     | 01-02-2016 | 31-12-9999 |+-------+-------+------------+------------+

如果日期周期不同,我不知道如何对我的数据库添加具有相同 ID 的另一条记录。

最佳答案

问题是表t1_has_t2中的主键只包括t1_idt2_id。您还应该在主键中包括剩余的两个列以使其工作。

顺便说一句,像你这样使用两个日期时,最好使用daterange。列,因为这样您就可以使用 EXCLUDE constraint 轻松检查重叠与 && operator .

关于sql - has_table 键的日期期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com