Tablonuzda zaten birincil anahtar var. Yalnızca birincil anahtar ekleyemezsiniz, aksi takdirde hataya neden olur. Çünkü sql tablosu için bir birincil anahtar var.
İlk olarak, eski birincil anahtarınızı bırakmanız gerekir.
MySQL:
ALTER TABLE Persion
DROP PRIMARY KEY;
SQL Server / Oracle / MS Erişimi:
ALTER TABLE Persion
DROP CONSTRAINT 'constraint name';
Kısıtlama adını tablonuzda bulmanız gerekir. Tablo oluştururken kısıtlama adı verdiyseniz, kısıtlama adını kolayca kullanabilirsiniz (örn: PK_Persion).
İkinci olarak, birincil anahtar ekleyin.
MySQL / SQL Server / Oracle / MS Erişimi:
ALTER TABLE Persion ADD PRIMARY KEY (PersionId,Pname,PMID);
ya da aşağıdaki en iyisi
ALTER TABLE Persion ADD CONSTRAINT PK_Persion PRIMARY KEY (PersionId,Pname,PMID);
Bu, geliştirici tarafından kısıtlama adı ayarlayabilir. Masayı korumak daha kolaydır.
Bütün cevaplara baktığımda biraz kafam karıştı. Bu yüzden her ayrıntıyı bulmak için bir belge araştırıyorum. Umarım bu cevap diğer SQL acemi yardımcı olabilir.
Referans: https://www.w3schools.com/sql/sql_primarykey.asp
personId
, tablonuzda yinelenmesine izin verdiğiniz anlamına gelir . Bu da, bir işlem (çok) tür tablosundan yalnızca bu anahtar üzerinde bu tabloya katılırsanız, yinelenen kayıtlar alacağınız ve işlem kayıtlarının 'iki kez sayılmasına' yol açacağı anlamına gelir.