Arjuna Aircraft Ident.: F-MBSD | Est-ce qu'il existe une instruction simple pour droper une PK sur une table, sans connaître le nom de cette PK ?
Par exemple, voici ma table :
Code :
- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[zMutationValideur]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
- drop table [dbo].[zMutationValideur]
- GO
- CREATE TABLE [dbo].[zMutationValideur] (
- [valideurMutationId] [int] IDENTITY (1, 1) NOT NULL ,
- [demandeId] [int] NOT NULL ,
- [userId] [int] NOT NULL ,
- [dateIntervention] [datetime] NULL ,
- [etat] [int] NOT NULL ,
- [departementId] [int] NULL ,
- [localisationid] [int] NULL ,
- [commentaire] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
- [ajouteParId] [int] NOT NULL ,
- [employeeId] [int] NULL ,
- [VAL_NEW_USER_ID] [int] NULL ,
- [gestParcId] [int] NULL
- ) ON [PRIMARY]
- GO
- ALTER TABLE [dbo].[zMutationValideur] WITH NOCHECK ADD
- CONSTRAINT [PK_zMutationValideur_1__13] PRIMARY KEY CLUSTERED
- (
- [valideurMutationId]
- ) ON [PRIMARY]
- GO
|
Comme vous pouvez voir, la PK a un "nom à la con" généré automatiquement parceque la personne qui a créé la table l'a fait depuis la GUID de SQL Server.
D'une base à l'autre, elle risque donc d'avoir un nom différent. (cette table est présente dans une centaine de bases, et je dois la modifier dans toutes les bases grace à un script T-SQL)
J'ai toujours la solution d'aller chercher les contraintes de type PK rattachées à cette table dans les tables system, mais je préfèrerais utiliser une syntaxe moins barbare, genre :
Code :
- alter table zMutationValideur drop primary key
|
(puisqu'il ne peut y avoir qu'une seule clé primaire sur une même table, ce n'est pas en soit impossible)
Une telle syntaxe existe-t-elle ? |