2017-07-16 1 views
0

I gérer des projets par code (PROYECT_A A00001)Existe-t-il un moyen de le faire, Ne pas répéter?

Il y a 3 tables (SEGMENT SE00001, LABLE LA00001, FORTE ST00001) qui se rapportent à un projet, il peut y avoir des codes répétés de ces tableaux, mais ils appartiennent uniquement pour un projet

Existe-t-il un moyen de ne pas répéter les champs?

CREATE TABLE [dbo].[PROYECT_A](
    [PROYECT_A] [int] IDENTITY(1,1) NOT NULL, 
    [CODE_A] AS ('A'+right('00000'+CONVERT([varchar],[PROYECT_A],(0)),(5))), 
    [STATUS] [datetime] NOT NULL, 
    [CREATION_DATE] [datetime] NOT NULL, 
CONSTRAINT [PK_RR] PRIMARY KEY CLUSTERED 
(
    [CODE_A] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 
END 
GO 

CREATE TABLE [dbo].[SEGMENT](
    [ID_SEGMENT] [int] IDENTITY(1,1) NOT NULL, 
    [CODE_SE] AS ('SE'+right('00000'+CONVERT([varchar],[ID_SEGMENT],(0)),(5))), 
    [NAME] [varchar](20), 
    [POWW] [varchar](20), 
    [SQWE] [varchar](20), 
    [DATESTART] [datetime] NOT NULL, 
    [DATESTART] [datetime] NOT NULL 
    [CODE_A] [varchar](20) 
GO 


CREATE TABLE [dbo].[LABLE](
    [ID_LABLE] [int] IDENTITY(1,1) NOT NULL, 
    [CODE_LA] AS ('LA'+right('00000'+CONVERT([varchar],[ID_LABLE],(0)),(5))), 
    [NAME] [varchar](20), 
    [POWW] [varchar](20), 
    [SQWE] [varchar](20), 
    [DATESTART] [datetime] NOT NULL, 
    [DATESTART] [datetime] NOT NULL 
    [CODE_A] [varchar](20) 
GO 

CREATE TABLE [dbo].[STRONG](
    [ID_STRONG] [int] IDENTITY(1,1) NOT NULL, 
    [CODE_ST] AS ('ST'+right('00000'+CONVERT([varchar],[ID_STRONG],(0)),(5))), 
    [NAME] [varchar](20), 
    [POWW] [varchar](20), 
    [SQWE] [varchar](20), 
    [DATESTART] [datetime] NOT NULL, 
    [DATESTART] [datetime] NOT NULL 
    [CODE_A] [varchar](20) 
GO 
+0

Quels champs contiennent les «codes répétés»? S'il vous plaît poster un échantillon et indiquer quelles sont les données sont le problème –

+0

Salut Martin - Bienvenue à Stack Overflow! À ce stade, je ne suis pas sûr de ce que vous demandez. Si le problème concerne les données, veuillez publier ce que vous voyez actuellement, et ce qu'il est supposé être. – nwhaught

Répondre

1

créer une seule table avec Type colonne pour différencier les enregistrements si elle appartient à SEGMENT, LABLE ou STRONG.

CREATE TABLE [dbo].[SEGMENT](
    [ID_SEGMENT] [int] IDENTITY(1,1) NOT NULL, 
    [Type] as Varchar(15) -- Here `SEGMENT`,`LABLE` or `STRONG` 
    [CODE_SE] AS (case type 
        when 'Segment' then 'SE' 
        when 'LABLE' then 'LA' 
        else 'ST' 
        end +right('00000'+CONVERT([varchar],[ID_SEGMENT],(0)),(5))), 
    [NAME] [varchar](20), 
    [POWW] [varchar](20), 
    [SQWE] [varchar](20), 
    [DATESTART] [datetime] NOT NULL, 
    [DATESTART] [datetime] NOT NULL 
    [CODE_A] [varchar](20) 
    ) 
+0

Le seul problème que j'ai est l'insertion doit également garantir que seules les valeurs sont jamais entrées dans les tables source –

+0

@clifton_h - Vrai que .. Bien sûr, OP doit s'assurer que .. –