Как исправить ОГРАНИЧЕНИЯ, мешающие мне копировать схему таблицы? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть таблица, состоящая из строк для создания штрих-кодов. Мне нужна точно такая же схема для штрих-кодов поддонов. Однако попытка просто SHOW CREATE таблицы caselabels, смена имени и нескольких имен столбцов, не работает.

Вот скрипт CREATE -

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[caselabels](
    [idx] [int] IDENTITY(42,1) NOT NULL,
    [imageFile] [nvarchar](50) NULL,
    [jobId] [nvarchar](50) NULL CONSTRAINT [DF__caselabel__workO__47DBAE45]  DEFAULT (NULL),
    [triggerStatus] [nvarchar](5) NULL CONSTRAINT [DF__caselabel__trigg__48CFD27E]  DEFAULT (NULL),
    [workOrder] [nvarchar](30) NULL,
    [t_stamp] [datetime2](0) NULL CONSTRAINT [DF__caselabel__t_sta__49C3F6B7]  DEFAULT (getdate()),
    [lotCode] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__lotCo__4AB81AF0]  DEFAULT (NULL),
    [expDate] [nvarchar](20) NULL CONSTRAINT [DF__caselabel__expDa__4BAC3F29]  DEFAULT (NULL),
    [qty] [int] NULL CONSTRAINT [DF__caselabels__qty__4CA06362]  DEFAULT (NULL),
    [gtinUL] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__gtinU__4D94879B]  DEFAULT (NULL),
    [gtinUC] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__gtinU__4E88ABD4]  DEFAULT (NULL),
    [prodNumber] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__prodN__4F7CD00D]  DEFAULT (NULL),
    [prodDesc] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__prodD__5070F446]  DEFAULT (NULL),
    [prodBrand] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__prodB__5165187F]  DEFAULT (NULL),
    [prodSKU] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__prodS__52593CB8]  DEFAULT (NULL),
    [prodSize] [nvarchar](45) NULL CONSTRAINT [DF__caselabel__prodS__5441852A]  DEFAULT (NULL),
    [dataMatrix] [nvarchar](50) NULL,
    [startingADCaseCount] [int] NULL,
    [address] [nvarchar](50) NULL,
 CONSTRAINT [PK_palletlabels_idx] PRIMARY KEY CLUSTERED 
(
    [idx] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Я просто пытаюсь изменить имя таблицы на метки паллет, а в столбце, начиная с ADCaseCount, на начальный ADPalletCount. Обратите внимание, что я уже изменил CONSTRAINT[PL_caselabels_idx] PRIMARY KEY CLUSTERED на CONSTRAINT [PK_palletlabels_idx] PRIMARY KEY CLUSTERED

Тем не менее, я все еще получаю эти ошибки -

Msg 2714, Level 16, State 5, Line 11
There is already an object named 'DF__caselabel__workO__47DBAE45' in the database.
Msg 1750, Level 16, State 0, Line 11
Could not create constraint or index. See previous errors.
Msg 15233, Level 16, State 1, Procedure sp_addextendedproperty, Line 74
Property cannot be added. Property 'MS_SSMA_SOURCE' already exists for 'dbo.caselabels'.

Я смотрю на первое ограничение [DF_caselabel_workO-47DBAE45] в caselabels и вижу это

USE [AntiDiversion]
GO

ALTER TABLE [dbo].[caselabels] ADD  CONSTRAINT [DF__caselabel__workO__47DBAE45]  DEFAULT (NULL) FOR [jobId]
GO

, который, похоже, уже совпадает с DEFAULT (NULL) в создании таблицы. Каждое ограничение строк выглядит следующим образом. Можно ли просто избавиться от CONSTRAINT [DF_caselabel_....] секций?

Учитывая, что вторая ошибка основана на первой, я думаю, что решение этой проблемы ограничения решит и второе сообщение об ошибке, но что из третьего? Я ничего не знаю об этом.

Использование SQL SERVER 2014.

1 Ответ

2 голосов
/ 30 мая 2019

Исходя из определения вашей таблицы, вы должны нормально удалять явные имена и просто иметь FieldName Null, FieldName2 Not Null.

Я обычно не называю свои ограничения Null / Not Null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...