如何在创建新的 table 时默认具有其他 table 列值的列?

How to default a column with value of a colunm of other table when create a new table?

CREATE TABLE "Family" (
  "Family_ID" INTEGER NOT NULL, 
  "Name" TEXT(20) NOT NULL,
);

CREATE TABLE "Babygirl" (
  "Baby_Id" INTEGER NOT NULL,
  "Family_ID" INTEGER NOT NULL,
  "Family_Name" TEXT(20) NOT NULL default......,
  "Last_Name" TEXT(20) NOT NULL,
);

我如何在 Family_name 用户之后写入 default 的 sql [=15] =] 家庭 table 的姓名?

简单的回答:你不能(不是默认的)。如果您已经有了家庭 table 的外键,则不需要 Babygirl table 上的名字。当你需要它时,只需将两个 table 加入一个简单的 sql 语句即可。

也不要在您的 table 名称和列名上使用双引号。很难向它写入 sql 语句。

类似于:

select f.columnsFromFamily, 
       b.columnsFromBabyGirl -- this is just an example
  from Family f
        inner join Babygirl b ON f.Family_ID = b.Family_ID

如果您选择此方法,请从 Babygirl table 中删除 Family_Name 列。

你唯一可以随心所欲地做的事情(重复名字)就是有一个触发器来这样做。类似于:

CREATE OR REPLACE TRIGGER ON trg_Babygirl
     BEFORE INSERT 
     ON Baygirl
as
DECLARE
   vFamilyName Family.Name%ROWTYPE;
BEGIN
     select Name INTO vFamilyName 
       from Family
      where Family_id = :NEW.Family_ID;
      --set the name here
      :NEW.Family_Name := vFamilyName;
END;

我强烈反对这种方法。只要坚持使用外键即可。