bonjour,
je suis entrain de créer mes tables sur sql server 2005 , est ce que c'est possible d'avoir ds une table une colonne calculer a partire d'autre colonne de la même table ( + / * - )
mecri![]()
bonjour,
je suis entrain de créer mes tables sur sql server 2005 , est ce que c'est possible d'avoir ds une table une colonne calculer a partire d'autre colonne de la même table ( + / * - )
mecri![]()
Je ne sais pas si cela est possible ou non lors de la definition de la table.
Par contre ca doit etre facilement faisable avec un update.
Tu peux aussi penser à un trigger on insert, et update, qui te met ta colonne à jour pour en live.
Cependant, je ne te conseillerai aucune de ces solutions car ca ne ferait qu'allourdir et ralentir ta db.
Pourquoi ne pas calculer cette valeur au moment de ta requete ?
j ai le mm problemke toi pauvrmen " j aime bien ton pseudi"
en fait ds plusieu ds une table je dois avoir la somme de deux colone de la même table,,, merci de me dire la solution car ca va me rendre dinge cette table..![]()
merci
Bonjour,
Il serait fort aimable à certains d'écrire en français.
Deux cas pour nos colonnes "calculées" :
- La colonne "calculée" est dans une autre table que la table qui sert à calculer : dans ce cas, lors de la mise à jour de la table par la procédure stockée, il suffit de rajouter du code pour faire le calcul de la valeur et réaliser l'UPDATE dans la seconde table. Cela n'alourdit en aucun cas le traitement, il faut simplement écrire proprement sa requête de mise à jour et vérifier que les bons indexes sont présents.
- La colonne vraiment calculée : c'est une colonne qui fait partie de la table et dont la valeur est calculée avec d'autres colonnes de la table. Dans ce cas, c'est lors de la creation de la table que l'on définit la formule de calcul :
L'option PERSISTED permet de stocker physiquement les valeurs calculées dans la table et mettra à jour les valeurs lorsque n'importe quelle colonne dont dépend la colonne calculée est mise à jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE maTable ( MaColonneA INT NOT NULL, MaColonneB INT NOT NULL, MaColonneCalculee INT AS (MAColonneA + MaColonneB) PERSISTED ); GO
A+
bonjour,
merci pour vos reponses
voila l ecris ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 USE [sami] GO /****** Object: Table [dbo].[Table_1] Script Date: 05/02/2008 11:02:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table_1]( [P1] [nchar](10) NOT NULL, [A] [int] NULL, [B] [int] NULL, [C] [int] AS ([B]+[A]) PERSISTED, ) GO CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [P1] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]& ) ON [PRIMARY]
ou il ya l erreur merci
Vous pouvez faire des colonnes calculées dans SQL Server 2005 :
- à la volée
- pertistante
- indexées
Exemple :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE T (COL1 INT, COL2 INT, COLCALC AS COL1 + COL2, COLCALC_PERSISTANTE AS COL1 - COL2 PERSISTED, COLCALC_PERSISTANTE_INDEXEE AS COL1 * COL2); GO CREATE INDEX X ON T (COLCALC_PERSISTANTE_INDEXEE); GO
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager