一尘不染

一列的默认值可以是SQL中的另一列吗?

sql

如果没有在产品表的描述列中输入任何值,则默认情况下,我希望它等于在product_name列中的值。我尝试了如下操作,但没有成功。这可能吗?

CONSTRAINT def_desc DEFAULT product.product_name FOR description;


阅读 240

收藏
2021-03-08

共1个答案

一尘不染

常见的解决方案是创建一个用于显示数据的视图。在视图中,您可以计算描述。像这样

CREATE TABLE t
(name VARCHAR2(10),
 description VARCHAR2(10));

CREATE OR REPLACE VIEW t_v (name, description)
AS 
SELECT name, NVL(description, name) FROM t;

INSERT into t (name, description) VALUES ('CAR','cool car');
INSERT into t (name, description) VALUES ('BIKE',NULL);

SELECT * FROM t_v;

NAME       DESCRIPTIO
---------- ----------
CAR        cool car  
BIKE       BIKE
2021-03-08