假设我将表customer2定义为:
CREATE TABLE customer2(
customer_id bigint NOT NULL DEFAULT nextval(('customer.customer_identity'::text)::regclass),
customer_name character varying
CONSTRAINT customer2_pkey PRIMARY KEY (customer_id)
)
我有另一个名为customer1的表,具有相同的表定义。在插入customer2之前,我想检查customer1以查看同一customer_name是否存在customer_id,如果是,则使用它。我的insert语句看起来类似于:
INSERT INTO customer2(
customer_id,
customer_name)
SELECT customer_id, --null if not found in customer1 table
nc.customer_name
FROM new_customers nc
LEFT OUTER JOIN customer1 c1 on c1.customer_name = nc.customer_name
运行此插入时,我在列" customer_id"中得到错误" null值违反了非空约束"。当我没有要插入customer_id时,有没有办法使用默认序列?显然,我可以编写两个不同的插入语句,但唉,这是一个重要的,看似不必要的代码重复,这会影响我的编程性质。
答案 0 :(得分:1)
你不能只使用Col1,Col2,Col6,Col9,Col10
data1,data2,data6,data9,data10
dataA,dataB,dataF,dataI,dataJ
和coalesce
来使用序列为null。
nextval