首页 > 解决方案 > 如何使列不为空,但在第一次创建时它确实需要为空

问题描述

我有两张桌子,tableAtableB

tableA(id, tableB_id)

tableB(id, tableA_id)

在 中创建记录时tableA,其 FK 值tableB_id尚不清楚。所以我别无选择,除非它可以为空。

但是在它被创建之后,行 intableB被填充,然后行 intableA被更新。

但是,发生这种情况后,我想确保它tableA.tableB_Id永远不会为空(为了数据一致性)。

有没有办法确保这一点?

我的第一次尝试是使tableA.tableB_id 不为空,但这会阻止在tableA.

我能想出的唯一想法是创建另一列:

tableA.is_initialized

然后当tableA.tableB_id被填充时,设置tableA.is_initialized为true。

然后添加一个约束,如果is_initialized为真,则tableB_Id不能为空。

我在正确的轨道上吗?

更具体地说,数据模型:它是表 A 和表 B 之间的一对多关系。但是我需要知道哪一个相关的tableB记录是那个default(当前正在使用的),所以我将它存储在tableA中。也许有更好的方法在数据库中对此进行建模,但到目前为止它运行良好。

标签: sqlsql-server

解决方案



推荐阅读