当没有组合框的值选择
StudeStude>情景插入SQL NULL - C#应用程序+ SQL Server 2008 R2的当没有组合框的值选择
我有一个表货币结构如下现在
currencyID - int - NOT NULL - Primary Key - IS Identity (**True**)
currency - VARCHAR(50) - NOT NULL
- ,这currencyID是另一个表中的外键Student_Payment_Details。
- 货币表托管在ComboBox控件中。
- 我需要一种方法在没有货币选项被选中情况下,插入空(或没有)。 (如的selectedIndex = -1)
在阅读文章指出,这是对所有SQL规则插入一个空的foriegn键,同时在主表与其绑定主NOT NULL键
所以,大家好,我需要的解决方法,你的建议。先谢谢你。
-
这里是我的存储过程的修剪版本
CREATE PROCEDURE [DBO]。[spStudentPaymentDetails]
-- PARAMETERS **** blah blah *** @currencyID int = null, @studentFees varchar(100) = null, **** blah blah *** AS BEGIN SET NOCOUNT ON; -- Add Student Details INSERT INTO Student_Payment_Details(****,currencyID,studentFees,****) values(****,@currencyID,@studentFees,****); SELECT SCOPE_IDENTITY(); END
即使它是货币表的FK,也可以在表Student_Payment_Details
中插入CurrencyID == NULL
的记录。
什么是不可能的插入与货币表PK NULL的记录,但是这不是你的情况。
请让我进一步阐述一下。插入代码包含在存储过程中。我可以通过在SQL Management Studio中执行它来插入NULL,但是通过VS引发异常(FOREIGN KEY CONSTRAINT ERROR) –
显示表和存储过程的更多详细信息。 –
+1它应该可以做到这一点,因为OP的业务需求是要求它。如果存储过程阻塞了用户所需的内容,那么存储过程是错误的。 – Bazzz
一种选择是有一个 '无' 的货币纪录在你的表中并使用该ID。
mmm,我不喜欢这个选项,因为这不是一个有效的真正的货币解决了问题。 –
你必须采取从它的一些距离,我看到2个选项:
- 使用假值(比如从对方的回答中没有)。
- 根本不要插入行,并认为它没有选择任何选项。
看到我的答案下面,FK并不妨碍你存储NULL,只有限制是,如果它不为null必须存在于你的其他表上。这也取决于您创建student_payment_details表的方式,即使您添加了FK约束,您也应该允许该CurrencyId列中的空值。 –
谢谢各位,您的快速回复。 –
仅供参考:我通过添加这些行插入我的存储过程(IF @currencyID = 0 SET @ currencyID = NULL;) –