Вставьте SQL NULL, если значение ComboBox не выбрано - PullRequest
1 голос
/ 31 августа 2011

StudeStude> Сценарий - Приложение C # + 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. Таблица валют размещается в элементе управления ComboBox.
  3. Мне нужен способ вставить NULL (или ничего), если не выбран вариант валюты . (например, selectedIndex = -1)

Читал статьи, утверждающие, что против всех правил SQL вставлять NULL для внешнего ключа в то время, когда он привязан к первичному ключу 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
    

Ответы [ 3 ]

1 голос
/ 31 августа 2011

Возможно вставить запись с CurrencyID == NULL в таблицу Student_Payment_Details, даже если это FK для таблицы Currency.

что невозможно, это вставить запись с PK NULL в валютестол, но это не ваш случай.

1 голос
/ 31 августа 2011

Один из вариантов - иметь в таблице валютную запись NONE и использовать этот идентификатор.

0 голосов
/ 31 августа 2011

Вы должны отойти на некоторое расстояние, и я вижу 2 варианта:

  • Используйте поддельное значение (как нет в другом ответе).
  • Не вставляйте строку вообще и рассматривайте ее как не выбранную опцию.
...