当没有选择ComboBox值时,插入SQL NULL

本文关键字:插入 SQL NULL 值时 有选择 ComboBox | 更新日期: 2023-09-27 18:07:04

studentstudent>场景- c# Application + SQL Server 2008 R2

我有一个表Currency,其结构如下

currencyID - int - NOT NULL - Primary Key - IS Identity (**True**)
currency - VARCHAR(50) - NOT NULL
  1. 现在,这个currencyID是另一个表Student_Payment_Details中的外键。
  2. 货币表托管在一个组合框控件中。
  3. 我需要一种方法来插入NULL(或什么都没有),如果没有货币选项被选择。(例如selecteindex = -1)

一直在阅读一些文章,这些文章指出,当外键绑定到主表中的主NOT NULL键时,为外键插入NULL是违反所有SQL规则的

所以,伙计们,我需要你的建议为一个解决方案。

  • 这是我的存储过程的精简版本

    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
    

当没有选择ComboBox值时,插入SQL NULL

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

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

一个选项是在表中有一个'NONE'货币记录,并使用该ID。

你必须与它保持一定距离,我看到两个选项:

  • 使用假值(就像其他答案中的none)
  • 根本不插入行,并将其视为未选择选项。