dax*_*xue 3 oracle ddl default
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,
);
Run Code Online (Sandbox Code Playgroud)
我如何在Family_name用户使用Name of Family表的值后编写默认的sql ?
简单的回答:你不能(不作为默认).如果您已经拥有族表的外键,则不需要Babygirl表上的名称.当你需要它时,只需在一个简单的sql语句中加入这两个表.
也不要在表名和列名上使用双引号.编写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
Run Code Online (Sandbox Code Playgroud)
如果您选择此方法,请Family_Name从Babygirl表中删除该列.
您可以根据需要做的唯一事情(重复名称)就是触发这样做.就像是:
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;
Run Code Online (Sandbox Code Playgroud)
我强烈反对这种做法.坚持外键.