Suggest you use a "Deleted/Disabled" field (boolean ((Yes/No)) in your table.
It not only has an impact on SQL DML (SQL queries and updates), your
proposed design also makes SQL DDL harder to write. Take a simple real
life example:
CREATE TABLE Parts (
part_number CHAR(8) NOT NULL PRIMARY KEY,
part_name VARCHAR(15) NOT NULL,
is_deleted CHAR(1) NOT NULL, CHECK (is_deleted IN ('N', 'Y'))
);
Consider a common sense rule that says all current (is_deleted = 'N')
parts must have unique names while allowing 'deleted' part's names to
be reused. You can't use a UNIQUE constraint, must use a table-level
CHECK constraint e.g.
ALTER TABLE Parts ADD
CONSTRAINT part_name__unique_for_non_deleted
CHECK (
NOT EXISTS (
SELECT T2.part_name
FROM Parts AS T2
WHERE T2.is_deleted = 'N'
GROUP BY T2.part_name
HAVING COUNT(*) > 1));
Now consider that the natural key for a lookup table is commonly the
sole data column and you have one of those tricky situations where
your primary key (lowercase) requires a table-level CHECK constraint :
(
Jamie.
--