仅在创建时Dissalow空值,但是在修改表时允许吗?

时间:2019-07-10 13:58:30

标签: sql postgresql constraints

我想知道如何进行以下操作。我有一张桌子,例如

const supplierDetails = props => {


  const [suppliers, setSupplierList] = useState([]);

  useEffect(() => {
    getSupplierData().then(response => {
      setSupplierList(response);
    });
  }, []);

  return (
    <div>
      {suppliers && <SupplierDetails suppliers={suppliers} />}
    </div>

  );

};

export default supplierDetails;

现在,我想在创建新行时在电话上强制执行NOT NULL,但是我希望以后能够修改该行并删除电话号码。在我的完整示例中,这实际上是一个外键引用,出于法律原因,将来可能必须删除该行外键引用。但是最初输入时,我需要强制它在那里。

1 个答案:

答案 0 :(得分:3)

您只能使用触发器来执行此操作(如您所述)。

相反,我建议该列为NOT NULL,并建议您使用NULL以外的“不可用”值。如果要存储字符串,则空字符串可能就足够了。或类似'REMOVED FOR PRIVACY COMPLIANCE'之类的东西。

对于外键引用,只需在引用表中具有一个表示“不可用”的值即可。我经常给这些值一个-1的键。这还有一个优点,即内部联接可以工作而不会删除行。

在我使用的数据库中,引用表通常具有这样的值,特别是内部联接的工作。我们发现这可以减少分析师和使用数据库的其他人的错误。