To maintain data integrity in a database, you can either define rules, defaults, indexes, and triggers; or, you can define create table integrity constraints.
The method select depends on your requirements. Integrity constraints offer the advantages of defining integrity controls in one step during the table creation process (as defined by the SQL standards) and of simplifying the process to create those integrity controls. However, integrity constraints are more limited in scope and less comprehensive than defaults, rules, indexes, and triggers.
For example, triggers provide more complex handling of referential integrity than those declared in create table. The integrity constraints defined by a create table are specific to that table; you cannot bind them to other tables, and you can only drop or change them using alter table. Constraints cannot contain subqueries or aggregate functions, even on the same table.
The two methods are not mutually exclusive. You can use integrity constraints along with defaults, rules, indexes, and triggers. This gives you the flexibility to choose the best method for your application. This section describes the create table integrity constraints. Defaults, rules, indexes, and triggers are described in later chapters.
unique and primary key constraints require that no two rows in a table have the same values in the specified columns. In addition, a primary key constraint does not allow a null value in any row of the column.
Referential integrity (references) constraints require that data being inserted in specific columns already has matching data in the specified table and columns. Use sp_helpconstraint to find a table’s referenced tables.
check constraints limit the values of data inserted into columns.
You can also enforce data integrity by restricting the use of null values in a column (the null or not null keywords) and by providing default values for columns (the default clause).