如何在表中插入带有外键的行?

the*_*ist 4 sql t-sql sql-server sql-server-2008

我有自己的外键.列parentid是外键,不能为NULL.

如果我这样做INSERT INTO mytable(name) VALUES('name'),那么它表示无法向parentid插入NULL .但是,如果没有插入行,我可以设置什么值?!

我如何编写将向该表添加行的脚本?

谢谢

Eri*_*rik 5

一个技巧:有一个带虚拟键的虚拟行,比如99999.用此作为FK插入,然后将FK更改为其实际值.并在交易中完成.

  • 有时候答案是标记的很有趣.有些人实际上付出了一些努力来找到问题的解决方案.他们制作并测试他们的解决方案 我绝对可以像"虚拟钥匙"一样快速回答,但这会带来一堆未来的问题.经过一些问题的迭代后,我提出了一个解决方案,它完全按照工作脚本的问题提出了问题.花了很多时间来回问问题并实施解决方案.嗯......这是Stackoverflow相当令人沮丧的事情. (2认同)

dno*_*lan 5

删除NOT NULL约束,因为它是一个不合适的约束.如果您没有ParentId,则值为NULL并且应该被允许.创建虚拟行只是为了产生虚拟parentid会产生不必要的依赖关系.