diff --git a/prisma/migrations/20240530223506_init/migration.sql b/prisma/migrations/20240602200800_init/migration.sql
similarity index 97%
rename from prisma/migrations/20240530223506_init/migration.sql
rename to prisma/migrations/20240602200800_init/migration.sql
index da9eb3d..a6f9516 100644
--- a/prisma/migrations/20240530223506_init/migration.sql
+++ b/prisma/migrations/20240602200800_init/migration.sql
@@ -23,6 +23,7 @@ CREATE TABLE `Character` (
     `rotation` INTEGER NOT NULL,
     `zoneId` INTEGER NOT NULL,
 
+    UNIQUE INDEX `Character_name_key`(`name`),
     PRIMARY KEY (`id`)
 ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index a12a3cf..233efe4 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -30,7 +30,7 @@ model Character {
   id         Int    @id @default(autoincrement())
   userId     Int
   user       User   @relation(fields: [userId], references: [id])
-  name       String
+  name       String @unique
   hitpoints  Int    @default(100)
   mana       Int    @default(100)
   level      Int    @default(1)
diff --git a/src/app/events/CharacterCreate.ts b/src/app/events/CharacterCreate.ts
index a9223cb..a1c87ad 100644
--- a/src/app/events/CharacterCreate.ts
+++ b/src/app/events/CharacterCreate.ts
@@ -11,6 +11,14 @@ export default function (socket: TSocket, io: Server) {
             data = ZCharacterCreate.parse(data);
 
             const user_id = socket.user?.id as number;
+
+            // Check if character name already exists
+            const characterExists = await CharacterRepository.getByName(data.name);
+
+            if (characterExists) {
+                return socket.emit('notification', {message: 'Character name already exists'});
+            }
+
             const character: Character = await CharacterRepository.create(user_id, data.name) as Character;
             const characters: Character[] = await CharacterRepository.getByUserId(user_id) as Character[];
 
diff --git a/src/app/repositories/CharacterRepository.ts b/src/app/repositories/CharacterRepository.ts
index 8cf1bda..8fea578 100644
--- a/src/app/repositories/CharacterRepository.ts
+++ b/src/app/repositories/CharacterRepository.ts
@@ -59,6 +59,19 @@ class CharacterRepository {
             throw new Error(`Failed to delete character: ${error.message}`);
         }
     }
+
+    async getByName(name: string): Promise<Character | null> {
+        try {
+            return await prisma.character.findFirst({
+                where: {
+                    name,
+                },
+            });
+        } catch (error: any) {
+            // Handle error
+            throw new Error(`Failed to get character by name: ${error.message}`);
+        }
+    }
 }
 
 export default new CharacterRepository;
\ No newline at end of file