当没有组合框的值选择

问题描述:

StudeStude>情景插入SQL NULL - C#应用程序+ SQL Server 2008 R2的当没有组合框的值选择

我有一个表货币结构如下现在

currencyID - int - NOT NULL - Primary Key - IS Identity (**True**) 

currency - VARCHAR(50) - NOT NULL 
  1. ,这currencyID是另一个表中的外键Student_Payment_Details。
  2. 货币表托管在ComboBox控件中。
  3. 我需要一种方法在没有货币选项被选中情况下,插入空(或没有)。 (如的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 
    
+0

看到我的答案下面,FK并不妨碍你存储NULL,只有限制是,如果它不为null必须存在于你的其他表上。这也取决于您创建student_payment_details表的方式,即使您添加了FK约束,您也应该允许该CurrencyId列中的空值。 –

+0

谢谢各位,您的快速回复。 –

+0

仅供参考:我通过添加这些行插入我的存储过程(IF @currencyID = 0 SET @ currencyID = NULL;) –

即使它是货币表的FK,也可以在表Student_Payment_Details中插入CurrencyID == NULL的记录。

什么是不可能的插入与货币表PK NULL的记录,但是这不是你的情况。

+0

请让我进一步阐述一下。插入代码包含在存储过程中。我可以通过在SQL Management Studio中执行它来插入NULL,但是通过VS引发异常(FOREIGN KEY CONSTRAINT ERROR) –

+0

显示表和存储过程的更多详细信息。 –

+1

+1它应该可以做到这一点,因为OP的业务需求是要求它。如果存储过程阻塞了用户所需的内容,那么存储过程是错误的。 – Bazzz

一种选择是有一个 '无' 的货币纪录在你的表中并使用该ID。

+0

mmm,我不喜欢这个选项,因为这不是一个有效的真正的货币解决了问题。 –

你必须采取从它的一些距离,我看到2个选项:

  • 使用假值(比如从对方的回答中没有)。
  • 根本不要插入行,并认为它没有选择任何选项。