Bonjour

J'ai une procédure stockée dans laquelle je crée une table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE PROCEDURE [etape001_206] AS 
 
if exists (select * from sysobjects where id = object_id(N'[dbo].[TABTRAV]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TABTRAV];
 
SELECT IDTABLE as idx,SACLIASSE=convert(char(20),''),NBADR=convert(int,0),VRAC=convert(int,0), CODE_REGROUP_206 as CODE, DEP=convert(char(6),SUBSTRING(CORRCP,1,2) + (case when patindex('PARIS %',CORRVILLE)<>0 then CENTRAL_PRESSE  when patindex('LYON %',CORRVILLE)<>0 then CENTRAL_PRESSE when patindex('MARSEILLE %',CORRVILLE)<>0 then CENTRAL_PRESSE ELSE '000' end)), CENTRAL_PRESSE as CENTRAL, COTE_TRI_PRESSE as COTE, SUBSTRING(CORRCP,3,3) as CP, SUBSTRING(ID_DISTRI,1,2) as SECTEUR, SUBSTRING(ID_DISTRI,3,2) as QUARTIER, NBLIASSE=Convert(int,0), TYPELIASSE=Convert(int,0) , TD=Convert(int,1) into TABTRAV FROM [tableent];
 
ALTER TABLE [dbo].[TABTRAV] ALTER COLUMN idx int NOT NULL 
 
ALTER TABLE [dbo].[TABTRAV] WITH NOCHECK ADD  CONSTRAINT [PK_TABTRAV] PRIMARY KEY  NONCLUSTERED ([idx])  ON [PRIMARY] ;
GO
Le problème c'est que quand je la lance j'ai quand même le message :
Impossible de définir la contrainte PRIMARY KEY sur une colonne pouvant être NULL de la table 'TABTRAV'.
malgré mon alter table qui passe la colonne à NOT NULL.

J'ai fais le test avec une autre table (tableent) et si je fais l'alter table sur la colonne à NOT NULL en dehors de la procédure stockée, juste avant, je n'ai pas de problème avec l'alter table de la PRIMARY KEY. Par contre si je fais dedans ca ne marche pas non plus.

Comment résoudre ce problème ?

Merci !