I'm not sure if this is any better or more correc that Visakh's solution (as I didn't try it). but, maybe it'l help?-- Create TablesCREATE TABLE PaymentMethod( PaymentMethodID INT IDENTITY(1, 1) PRIMARY KEY, Description VARCHAR(20) NOT NULL)CREATE TABLE Payment( PaymentID INT IDENTITY(1, 1) PRIMARY KEY, PaymentMenthodID INT NOT NULL CONSTRAINT cfkPay FOREIGN KEY (PaymentMenthodID) REFERENCES PaymentMethod (PaymentMethodID), ChequeNo varchar(20) not null )ALTER TABLE PaymentADD CONSTRAINT CK_Payment_ChequeNo CHECK ((CASE WHEN PaymentMenthodID = 1 AND LEN(ChequeNo) > 0 THEN 1 WHEN PaymentMenthodID <> 1 AND LEN(ChequeNo) = 0 THEN 1 ELSE 0 END) = 1)-- Popualte Domain DataSET IDENTITY_INSERT PaymentMethod ONINSERT PaymentMethod (PaymentMethodID, Description)VALUES(1, 'Cheque'),(2, 'Cash'),(3, 'Credit Card')SET IDENTITY_INSERT PaymentMethod ON-- Try InsertingINSERT Payment (PaymentMenthodID, ChequeNo) VALUES (1, NULL) -- FailINSERT Payment (PaymentMenthodID, ChequeNo) VALUES (1, '') -- FailINSERT Payment (PaymentMenthodID, ChequeNo) VALUES (1, '12345') -- SuccessINSERT Payment (PaymentMenthodID, ChequeNo) VALUES (2, '12345') -- FailINSERT Payment (PaymentMenthodID, ChequeNo) VALUES (2, '') -- Success-- Drop tablesDROP TABLE PaymentDROP TABLE PaymentMethod
EDIT: Added DROP