As I have recently answered, I recommend against using varchar() and nvarchar() columns as the primary key. They are slower on joins and QueryById() operations, and the temptation is to allow editing the value (which I also recommend against). Editing primary keys is bad because there is a clustered index on the column. If you change the values enough, you will skew the index and have to rebuild.
It is better to use an IDENTITY column (SQL Server) or SEQUENCE (Oracle) and set a UNIQUE constraint on the Name column. With the unique constraint, the database engine will throw an exception if the user tries to enter a duplicate name. Your code should catch the exception and present an appropriate error message to the user.