I realise this is an old thread, but I needed an answer to this, so maybe someone else does too...
Evidently the same key / index names and check constraint names can indeed be repeated in different schemas in the same database, so I agree with the above comments, and don't see the point of adding the schema name as part of the constraint name
E.g. the following code works in SQL 2012 and 2008 R2 with no errors
-- create a table in the dbo schema, with primary key CREATE TABLE dbo.Children ( id_Child int IDENTITY(1,1) NOT NULL, ChildName varchar(50) NULL, id_Parent int NOT NULL, CONSTRAINT PK_Children PRIMARY KEY CLUSTERED (id_Child ASC) ) GO -- now an index and a check constraint CREATE NONCLUSTERED INDEX IX_Children_ChildName ON dbo.Children (ChildName ASC) GO ALTER TABLE dbo.Children WITH CHECK ADD CONSTRAINT CK_Children_LongEnough CHECK (len([ChildName])>(3)) GO -- now create another schema CREATE SCHEMA test AUTHORIZATION dbo GO -- an indentical table in the other schema, with a PRIMARY KEY OF THE SAME NAME CREATE TABLE test.Children ( id_Child int IDENTITY(1,1) NOT NULL, ChildName varchar(50) NULL, id_Parent int NOT NULL, CONSTRAINT PK_Children PRIMARY KEY CLUSTERED (id_Child ASC) ) GO -- now an index and a check constraint on the alternate table in another schema, with -- the IDENTICAL NAMES CREATE NONCLUSTERED INDEX IX_Children_ChildName ON test.Children (ChildName ASC) GO ALTER TABLE test.Children WITH CHECK ADD CONSTRAINT CK_Children_LongEnough CHECK (len([ChildName])>(3)) GO