添加一般约束

时间:2015-02-16 18:43:01

标签: postgresql

以下是我与之合作的关系:

enter image description here

粗体的东西是主键。 第2部分要求我:

enter image description here

我通过以下方式完成了这项工作:

enter image description here

然后第3部分要求我:

enter image description here

我是通过以下方式完成的:

enter image description here

我无法弄清楚如何为3.3#2做什么,我不确定3.3#3是否正确。对于3.3#3,它告诉我ALTER附近有语法错误,但我不确定。我对PostgreSQL很陌生,所以我尽了最大努力。

我对3.3#2的尝试将是:

ALTER TABLE mg_customers
ADD CONSTRAINT no_null_mgc
-- Not sure what to add here

1 个答案:

答案 0 :(得分:1)

3.3#2的解决方案可能是:

ALTER TABLE mg_customers ALTER COLUMN address_id SET NOT NULL;
ALTER TABLE dv_address ALTER COLUMN address_id SET NOT NULL;

如果某些表mg_customers或dv_address的行具有null address_id,则此命令将失败。在这种情况下,您必须首先编辑数据并确保mg_customers的每一行在address_id中都有一个值,该值引用dv_address中的值。即,如果表dv_address中存在address_id = 10的记录,则可以执行以下操作:

UPDATE mg_customers SET address_id = 10 WHERE  address_id IS NULL;

3.3#3的解决方案

UPDATE dv_address SET address = 'NotKnown' WHERE address IS NULL;
ALTER TABLE dv_address ALTER COLUMN address SET NOT NULL;
ALTER TABLE dv_address ALTER COLUMN address SET DEFAULT 'NotKnown';

如有必要,请对列地址2重复此操作