web-dev-qa-db-fra.com

Créer une vue avec la clé primaire?

Je crée une vue avec les codes suivants

SELECT
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T1' AS sno,
    YEAR(okuma_tarihi) AS Yillar,
    SUM(toplam_kullanim_T1) AS TotalUsageValue, 'T1' AS UsageType
FROM
    TblSayacOkumalari
GROUP BY
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T1', YEAR(okuma_tarihi)

UNION ALL

SELECT
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T2' AS sno,
    YEAR(okuma_tarihi) AS Yillar,
    SUM(toplam_kullanim_T2) AS TotalUsageValue, 'T2' AS UsageType
FROM
    TblSayacOkumalari
GROUP BY
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T1', YEAR(okuma_tarihi)

UNION ALL

SELECT
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T3' AS sno,
    YEAR(okuma_tarihi) AS Yillar,
    SUM(toplam_kullanim_T3) AS TotalUsageValue, 'T3' AS UsageType
FROM
    TblSayacOkumalari
GROUP BY
    CONVERT(NVARCHAR, YEAR(okuma_tarihi)) + 'T1', YEAR(okuma_tarihi)

Je veux définir CONVERT(nvarchar, YEAR(okuma_tarihi)) + 'T1' AS sno comme clé primaire est-ce possible? Si c'est possible, comment faire?

22
AliRıza Adıyahşi

Vous ne pouvez pas créer de clé primaire dans une vue. Dans SQL Server, vous pouvez créer un index sur une vue mais cela est différent de la création d'une clé primaire.

Si vous nous donnez plus d'informations sur les raisons pour lesquelles vous voulez une clé sur votre point de vue, nous pouvons peut-être vous aider.

37
Kevin Aenmey

Vous ne pourrez peut-être pas créer de clé primaire (par exemple), mais si votre vue est basée sur une table avec une clé primaire et que la clé est incluse dans la vue, la clé primaire sera également reflétée dans la vue. Les applications nécessitant une clé primaire peuvent accepter la vue comme c'est le cas avec Lightswitch.

3
DLallemant