You can use several approuches to do this:
Computed Columns
CREATE TABLE t3
(
ID INT IDENTITY(1,1),
ApprovalID INT,
Approval AS ( CASE
WHEN ApprovalID = 1 THEN 'Hatchery'
WHEN ApprovalID = 2 THEN 'Purchase'
WHEN ApprovalID = 3 THEN 'Rearing'
WHEN ApprovalID = 4 THEN 'Source Unknown'
WHEN ApprovalID = 5 THEN 'Not Approved'
ELSE '<Unknown approval state>'
END
) PERSISTED
)
INSERT INTO t3(ApprovalID) VALUES(1)
INSERT INTO t3(ApprovalID) VALUES(2)
INSERT INTO t3(ApprovalID) VALUES(3)
INSERT INTO t3(ApprovalID) VALUES(4)
INSERT INTO t3(ApprovalID) VALUES(5)
UPDATE t3
set ApprovalID = 2
where ApprovalID = 1
SELECT * FROM t3
Triggers
DROP TABLE t3
CREATE TABLE t3
(
ID INT IDENTITY(1,1),
ApprovalID INT,
Name NVARCHAR(256),
)
GO
CREATE TRIGGER t3_trigger
ON t3
AFTER INSERT, UPDATE
AS
UPDATE t3
SET Name = CASE
WHEN i.ApprovalID = 1 THEN 'Hatchery'
WHEN i.ApprovalID = 2 THEN 'Purchase'
WHEN i.ApprovalID = 3 THEN 'Rearing'
WHEN i.ApprovalID = 4 THEN 'Source Unknown'
WHEN i.ApprovalID = 5 THEN 'Not Approved'
ELSE '<Unknown approval state>'
END
FROM t3 INNER JOIN inserted i ON t3.ID = i.ID
GO
INSERT INTO t3(ApprovalID) VALUES(1)
INSERT INTO t3(ApprovalID) VALUES(2)
INSERT INTO t3(ApprovalID) VALUES(3)
INSERT INTO t3(ApprovalID) VALUES(4)
INSERT INTO t3(ApprovalID) VALUES(5)
UPDATE t3 set ApprovalID = 2 WHERE ApprovalID = 1
SELECT t3.*, Approval.Name FROM t3 LEFT JOIN Approval ON t3.ApprovalID = Approval.ApprovalID
But best way is to split data on two table
CREATE TABLE t3
(
ID INT IDENTITY(1,1),
ApprovalID INT,
)
CREATE TABLE Approval
(
ApprovalID INT,
Name NVARCHAR(256)
)
INSERT INTO Approval(ApprovalID, Name) VALUES( 1, 'Hatchery' )
INSERT INTO Approval(ApprovalID, Name) VALUES( 2 , 'Purchase')
INSERT INTO Approval(ApprovalID, Name) VALUES( 3, 'Rearing' )
INSERT INTO Approval(ApprovalID, Name) VALUES( 4, 'Source Unknown' )
INSERT INTO Approval(ApprovalID, Name) VALUES( 5, 'Not Approved' )
INSERT INTO t3(ApprovalID) VALUES(1)
INSERT INTO t3(ApprovalID) VALUES(2)
INSERT INTO t3(ApprovalID) VALUES(3)
INSERT INTO t3(ApprovalID) VALUES(4)
INSERT INTO t3(ApprovalID) VALUES(5)
and use for select data query like below:
SELECT t3.*, Approval.Name FROM t3 LEFT JOIN Approval ON t3.ApprovalID = Approval.ApprovalID
JOINagainst itapprovalcolumn to another, static, table that have two columns -approval_idandapproval, and use ajoinwith the original table when you want to display theapprovalstring. This process is called normalization.