2012-07-11 14 views
16

Ho creare una visualizzazione con i seguenti codiciCrea vista con chiave primaria?

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) 

voglio definire CONVERT(nvarchar, YEAR(okuma_tarihi)) + 'T1' AS sno come chiave primaria è possibile? Se è possibile, come posso fare?

risposta

26

Non è possibile creare una chiave primaria su una vista. In SQL Server è possibile create an index on a view ma è diverso dalla creazione di una chiave primaria.

Se ci fornisci maggiori informazioni sul motivo per cui desideri una chiave sul tuo punto di vista, forse possiamo aiutarti.

+2

Creo un modello dalla vista e cambio sno manualy come una chiave di entità. Quando aggiorno il modello, devo cambiarlo anche come chiave di entità. questo non è funzionalmente per me. –

+10

"Se ci dai maggiori informazioni sul motivo per cui vuoi una chiave sulla tua vista" - Entity Framework lancia un avvertimento che una vista non ha una chiave primaria: 'Errore 6002: La tabella/vista 'mydb.dbo.myview' non avere una chiave primaria definita ... ' – Ivan

+5

@Ivan Il seguente link può aiutare per quella situazione: http://stackoverflow.com/a/2715299/1464699 –

1

Potrebbe non essere possibile creare una chiave primaria (per esempio) ma se la vista è basata su una tabella con una chiave primaria e la chiave è inclusa nella vista, la chiave primaria verrà riflessa nella vista anche. Le applicazioni che richiedono una chiave primaria possono accettare la vista come nel caso di Lightswitch.

+0

Provo per lo stesso @Dlallemant, ma la chiave primaria della tabella effettiva non funziona come tabella di visualizzazione del nemico principale. –

Problemi correlati