Add and drop casts on a distinct type

To enforce strong typing on a distinct type, the database server provides explicit casts to handle conversions between a distinct type and its source type. However, the creator of a distinct type can drop the existing explicit casts and create implicit casts, so that conversions between a distinct type and its source type do not require an explicit cast.
Important: When you drop the explicit casts between a distinct type and its source type that the database server provides, and instead create implicit casts to handle conversions between these data types, you diminish the distinctiveness of the distinct type.
The following DROP CAST statements drop the two explicit casts that were automatically defined on the movie_type:
DROP CAST(movie_type AS VARCHAR(30));
DROP CAST(VARCHAR(30) AS movie_type);
After the existing casts are dropped, you can create two implicit casts to handle conversions between movie_type and VARCHAR. The following CREATE CAST statements create two implicit casts:
CREATE IMPLICIT CAST (movie_type AS VARCHAR(30));
CREATE IMPLICIT CAST (VARCHAR(30) AS movie_type);

You cannot create a cast to convert between two data types if such a cast already exists in the database.

If you create implicit casts to convert between the distinct type and its source type, you can compare the two types without an explicit cast. In the following statement, the comparison between the video column and the laser_disc column requires a conversion. Because an implicit cast has been created, the conversion between VARCHAR and movie_type is implicit.
SELECT video FROM entertainment
   WHERE video = laser_disc