В таблице, на которую имеются ссылки, отсутствуют первичные или потенциальные ключи, соответствующие списку
30.11.2018, 17:21. Показов 4649. Ответов 2
Здравствуйте! Только начинаю изучать БД, возникли проблемы при создании следующего запроса:
T-SQL | ||
|
Выдает следующее:
Сообщение 1776, уровень 16, состояние 0, строка 19
В таблице «Warehouse», на которую имеются ссылки, отсутствуют первичные или потенциальные ключи, соответствующие списку ссылающихся столбцов во внешнем ключе «FK__TradePoint__06CD04F7».
Сообщение 1750, уровень 16, состояние 1, строка 19
Не удалось создать ограничение или индекс. См. описание предыдущих ошибок.
Пытался найти решение сам, вроде бы проблема в том, что происходит ссылка на часть составного первичного ключа, но я ссылаюсь на все поля первичного ключа таблицы Warehouse. Подскажите, пожалуйста, в чем проблема?(
0
В таблице, на которую имеются ссылки, отсутствуют первичные или потенциальные ключи, соответствующие списку
30.11.2018, 17:21. Показов 4179. Ответов 2
Здравствуйте! Только начинаю изучать БД, возникли проблемы при создании следующего запроса:
T-SQL | ||
|
Выдает следующее:
Сообщение 1776, уровень 16, состояние 0, строка 19
В таблице «Warehouse», на которую имеются ссылки, отсутствуют первичные или потенциальные ключи, соответствующие списку ссылающихся столбцов во внешнем ключе «FK__TradePoint__06CD04F7».
Сообщение 1750, уровень 16, состояние 1, строка 19
Не удалось создать ограничение или индекс. См. описание предыдущих ошибок.
Пытался найти решение сам, вроде бы проблема в том, что происходит ссылка на часть составного первичного ключа, но я ссылаюсь на все поля первичного ключа таблицы Warehouse. Подскажите, пожалуйста, в чем проблема?(
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Кто-нибудь может мне понять, почему я получаю эту ошибку и определить мою ошибку здесь?
Я прочитал сообщение об ошибке, но не могу определить различные типы данных? Чего мне не хватает?
CREATE TABLE STAFF (
StaffLastname NVARCHAR(100) NOT NULL,
StaffFirstName NVARCHAR(100) NOT NULL,
StaffID NVARCHAR(100) NOT NULL,
PRIMARY KEY (StaffID)
);
CREATE TABLE WAREHOUSE(
WarehouseLocation NVARCHAR(100) NOT NULL,
PRIMARY KEY (WarehouseLocation)
);
CREATE TABLE CUSTOMER (
CustomerID NVARCHAR(50),
CustomerName NVARCHAR(100) NOT NULL,
CustomerAddress NVARCHAR(100) NOT NULL,
CustomerCity NVARCHAR(100) NOT NULL,
PRIMARY KEY (CustomerID)
);
CREATE TABLE COURSE (
CourseID NVARCHAR(25),
CourseName NVARCHAR(100) NOT NULL,
PRIMARY KEY (CourseID)
);
CREATE TABLE COURSE_OFFERING (
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
PRIMARY KEY (WarehouseLocation,CourseID,CourseDate),
FOREIGN KEY (CourseID) REFERENCES COURSE,
FOREIGN KEY (WarehouseLocation) REFERENCES WAREHOUSE
);
CREATE TABLE BOOKING (
CustomerID NVARCHAR(50) NOT NULL,
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
BookingDate DATE CHECK (LEN(BookingDate) = 8),
PaymentAmount MONEY CHECK (PaymentAmount > 0) NOT NULL,
Review NVARCHAR(100) NULL,
PRIMARY KEY (CustomerID, WarehouseLocation, CourseID, CourseDate),
FOREIGN KEY (WarehouseLocation, CourseID, CourseDate) REFERENCES COURSE_OFFERING,
FOREIGN KEY (CustomerID) REFERENCES CUSTOMER
);
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (StaffID) REFERENCES STAFF,
FOREIGN KEY (CourseDate, WarehouseLocation, CourseID) REFERENCES COURSE_OFFERING
);
ERROR MSG - - -- - - - - - - - - - -
(Затронута 1 строка) Сообщение 1778, уровень 16, состояние 0, строка 65 Столбец «COURSE_OFFERING.WarehouseLocation» не имеет того же типа данных, что и столбец ссылки «STAFF_ALLOCATION.CourseDate» во внешнем ключе «FK__STAFF_ALLOCATION__5D60DB10».
Сообщение 1750, уровень 16, состояние 1, строка 65 Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки.
2 ответа
Лучший ответ
В вашей последней таблице у вас есть внешний ключ, который имеет 3 столбца с таким порядком типов данных: DATE, NVARCHAR, NVARCHAR
И они ссылаются на таблицу, которая имеет 3 столбца с таким порядком типов данных:
NVARCHAR, NVARCHAR, ДАТА
Если вы измените свою последнюю таблицу на это:
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (StaffID) REFERENCES STAFF,
FOREIGN KEY (WarehouseLocation, CourseID, CourseDate) REFERENCES COURSE_OFFERING
Все будет хорошо, как в этой демонстрации
1
VBoka
15 Июл 2020 в 05:22
Настройте порядок столбцов в ПЕРВИЧНОМ КЛЮЧЕ в таблице ПРЕДЛОЖЕНИЕ КУРСА со столбцами в КЛЮЧЕВОМ КЛЮЧЕ в таблице STAFF_ALLOCATION. потому что раньше WarehouseLocation, CourseID, CourseDate = NVARCHAR, NVARCHAR, DATE при предложении курса CourseDate, WarehouseLocation, CourseID = DATE, NVARCHAR, NVARCHAR
CREATE TABLE COURSE_OFFERING (
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
PRIMARY KEY (WarehouseLocation,CourseID,CourseDate)
);
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (WarehouseLocation,CourseID,CourseDate) REFERENCES COURSE_OFFERING
);
0
Agung Panduan
15 Июл 2020 в 09:08
Additional info: If the table that will be referenced by a table of migration already exists, then sequelize create foreign key successfuly, but if the table that will be referenced by a table created in migration before, then it not works.
What you are doing?
'use strict'; module.exports = { up: async (queryInterface, Sequelize) => { return await queryInterface.createTable( 'Comprovante', { IdComprovante: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, }, Descricao: { type: Sequelize.STRING, allowNull: false, }, Valor: { type: Sequelize.DECIMAL(10, 2), allowNull: false, comment: 'O valor do documento ou da parte do documento que ' + 'servirá de comprovação', }, AtualizadoEm: { type: Sequelize.DATE, allowNull: true, }, CriadoEm: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW, comment: 'Este campo é importante para indicar a data que vai ' + 'ter início para computar o auxílio', }, DboIdDocumento: { type: Sequelize.INTEGER, comment: 'Referência ao documento digitalizado', }, }, { schema: 'auxilio_saude_v2' }, ); }, down: async (queryInterface, Sequelize) => { return await queryInterface.dropTable('Comprovante'); }, };
'use strict'; module.exports = { up: async (queryInterface, Sequelize) => { return await queryInterface.createTable( 'Ressarcimento', { IdRessarcimento: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, }, Tipo: { type: Sequelize.ENUM('recorrente', 'nao-recorrente'), allowNull: false, }, Descricao: { type: Sequelize.STRING, allowNull: false, }, MesCompetencia: { type: Sequelize.INTEGER, allowNull: false, comment: 'A partir de/Em qual mês o ressarcimento valerá', }, AnoCompetencia: { type: Sequelize.INTEGER, allowNull: false, comment: 'A partir de/Em qual ano o o ressarcimento valerá', }, Valor: { type: Sequelize.DECIMAL(10, 2), allowNull: false, comment: 'A atualização em valor gerará um novo ressarcimento ' + '(se ele for recorrente)', }, Ativo: { type: Sequelize.BOOLEAN, allowNull: false, }, MotivoNaoAtivo: { type: Sequelize.STRING, allowNull: true, }, AtualizadoEm: { type: Sequelize.DATE, allowNull: true, }, CriadoEm: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW, comment: 'Este campo é importante para indicar a data que vai ' + 'ter início para computar o auxílio', }, /** Foreign keys */ IdComprovante: { type: Sequelize.INTEGER, references: { model: 'Comprovante', key: 'IdComprovante', schema: 'auxilio_saude_v2', }, }, DboIdVinculo: { type: Sequelize.INTEGER, references: { model: 'Vinculo', key: 'IdVinculo', schema: 'dbo', }, }, }, { schema: 'auxilio_saude_v2' }, ); }, down: async (queryInterface, Sequelize) => { return await queryInterface.dropTable('Ressarcimento'); }, };
What do you expect to happen?
To create a foreign key in Ressarcimento.IdComprovante
. If i comment
references: {
model: 'Comprovante',
key: 'IdComprovante',
schema: 'auxilio_saude_v2',
},
then, it works.
What is actually happening?
== 20181205154655-CreateAuxilioSaudeSchema: migrating =======
== 20181205154655-CreateAuxilioSaudeSchema: migrated (0.031s)
== 20181205154700-CreateAuxilioSaudeComprovanteTable: migrating =======
== 20181205154700-CreateAuxilioSaudeComprovanteTable: migrated (0.037s)
== 20181205155631-CreateAuxilioSaudeRessarcimentoTable: migrating =======
ERROR: Could not create constraint or index. See previous errors.
Dialect: MSSQL
Sequelize CLI version: latest
Sequelize version: latest
Additional info: If the table that will be referenced by a table of migration already exists, then sequelize create foreign key successfuly, but if the table that will be referenced by a table created in migration before, then it not works.
What you are doing?
'use strict'; module.exports = { up: async (queryInterface, Sequelize) => { return await queryInterface.createTable( 'Comprovante', { IdComprovante: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, }, Descricao: { type: Sequelize.STRING, allowNull: false, }, Valor: { type: Sequelize.DECIMAL(10, 2), allowNull: false, comment: 'O valor do documento ou da parte do documento que ' + 'servirá de comprovação', }, AtualizadoEm: { type: Sequelize.DATE, allowNull: true, }, CriadoEm: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW, comment: 'Este campo é importante para indicar a data que vai ' + 'ter início para computar o auxílio', }, DboIdDocumento: { type: Sequelize.INTEGER, comment: 'Referência ao documento digitalizado', }, }, { schema: 'auxilio_saude_v2' }, ); }, down: async (queryInterface, Sequelize) => { return await queryInterface.dropTable('Comprovante'); }, };
'use strict'; module.exports = { up: async (queryInterface, Sequelize) => { return await queryInterface.createTable( 'Ressarcimento', { IdRessarcimento: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, }, Tipo: { type: Sequelize.ENUM('recorrente', 'nao-recorrente'), allowNull: false, }, Descricao: { type: Sequelize.STRING, allowNull: false, }, MesCompetencia: { type: Sequelize.INTEGER, allowNull: false, comment: 'A partir de/Em qual mês o ressarcimento valerá', }, AnoCompetencia: { type: Sequelize.INTEGER, allowNull: false, comment: 'A partir de/Em qual ano o o ressarcimento valerá', }, Valor: { type: Sequelize.DECIMAL(10, 2), allowNull: false, comment: 'A atualização em valor gerará um novo ressarcimento ' + '(se ele for recorrente)', }, Ativo: { type: Sequelize.BOOLEAN, allowNull: false, }, MotivoNaoAtivo: { type: Sequelize.STRING, allowNull: true, }, AtualizadoEm: { type: Sequelize.DATE, allowNull: true, }, CriadoEm: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW, comment: 'Este campo é importante para indicar a data que vai ' + 'ter início para computar o auxílio', }, /** Foreign keys */ IdComprovante: { type: Sequelize.INTEGER, references: { model: 'Comprovante', key: 'IdComprovante', schema: 'auxilio_saude_v2', }, }, DboIdVinculo: { type: Sequelize.INTEGER, references: { model: 'Vinculo', key: 'IdVinculo', schema: 'dbo', }, }, }, { schema: 'auxilio_saude_v2' }, ); }, down: async (queryInterface, Sequelize) => { return await queryInterface.dropTable('Ressarcimento'); }, };
What do you expect to happen?
To create a foreign key in Ressarcimento.IdComprovante
. If i comment
references: {
model: 'Comprovante',
key: 'IdComprovante',
schema: 'auxilio_saude_v2',
},
then, it works.
What is actually happening?
== 20181205154655-CreateAuxilioSaudeSchema: migrating =======
== 20181205154655-CreateAuxilioSaudeSchema: migrated (0.031s)
== 20181205154700-CreateAuxilioSaudeComprovanteTable: migrating =======
== 20181205154700-CreateAuxilioSaudeComprovanteTable: migrated (0.037s)
== 20181205155631-CreateAuxilioSaudeRessarcimentoTable: migrating =======
ERROR: Could not create constraint or index. See previous errors.
Dialect: MSSQL
Sequelize CLI version: latest
Sequelize version: latest
I’m trying to create a table with 3 columns. The first column should be an identity column named DescriptionsID, the second column should be a foreign key column named ProductID, and the third column should be an xml column named Description. But, I’m receiving an error:
Foreign Key ‘FK_ProductDescriptions_bacb18ce3aa67348e55d’ references invalid table ‘Product’ and «Could not create constraint or index. See previous errors.»
This is what I got:
CREATE TABLE ProductDescriptions (DescriptionsID int PRIMARY KEY NOT NULL,
ProductID varchar(25) NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
Description text NULL) ;
References Product(ProductID) has the error/red underlining
asked Nov 26, 2018 at 1:28
2
When you create a Referential Constraint, You Need to make sure that the Table and the Column which you are referring already exists in the Database.
Also, the Datatype of Both Referring Column and the Referred Column Should Be the Same
Column 'Product.ProductId' is not the same data type as referencing column
'ProductDescriptions.ProductID' in the foreign key
So Create Product Table First, and set the Product Id as Primary Key
CREATE TABLE Product
(
ProductId INT IDENTITY(1,1) PRIMARY KEY,
ProductName VARCHAR(50)
)
CREATE TABLE ProductDescriptions
(
DescriptionsID int PRIMARY KEY NOT NULL,
ProductID INT NOT NULL
,FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
[Description] text NULL
) ;
answered Nov 26, 2018 at 5:46
I’m trying to create a table with 3 columns. The first column should be an identity column named DescriptionsID, the second column should be a foreign key column named ProductID, and the third column should be an xml column named Description. But, I’m receiving an error:
Foreign Key ‘FK_ProductDescriptions_bacb18ce3aa67348e55d’ references invalid table ‘Product’ and «Could not create constraint or index. See previous errors.»
This is what I got:
CREATE TABLE ProductDescriptions (DescriptionsID int PRIMARY KEY NOT NULL,
ProductID varchar(25) NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
Description text NULL) ;
References Product(ProductID) has the error/red underlining
asked Nov 26, 2018 at 1:28
2
When you create a Referential Constraint, You Need to make sure that the Table and the Column which you are referring already exists in the Database.
Also, the Datatype of Both Referring Column and the Referred Column Should Be the Same
Column 'Product.ProductId' is not the same data type as referencing column
'ProductDescriptions.ProductID' in the foreign key
So Create Product Table First, and set the Product Id as Primary Key
CREATE TABLE Product
(
ProductId INT IDENTITY(1,1) PRIMARY KEY,
ProductName VARCHAR(50)
)
CREATE TABLE ProductDescriptions
(
DescriptionsID int PRIMARY KEY NOT NULL,
ProductID INT NOT NULL
,FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
[Description] text NULL
) ;
answered Nov 26, 2018 at 5:46
SQL Server 2017 on Windows SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core Еще…Меньше
Проблемы
Предположим, что у вас есть двоичная база данных параметров сортировки в SQL Server 2017. При создании узла или краевой таблицы могут появляться следующие сообщения об ошибках:
Сообщение 1921, уровень 16, состояние 1, строка LineNumber
Указана недопустимая файловая группа «PRIMARY.».
Сообщение 1750, уровень 16, состояние 1, строка LineNumber
Не удалось создать ограничение или индекс. Просмотреть предыдущие ошибки.
Примечание. При создании узла или краевой таблицы с помощью _id $node или $edge _id таблица может быть создана успешно.
Решение
Эта проблема устранена в следующем накопительном обновлении SQL Server:
Накопительное обновление 5 для SQL Server 2017
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Последнее накопительное обновление для SQL Server 2017
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.
Нужна дополнительная помощь?
Кто-нибудь может мне понять, почему я получаю эту ошибку и определить мою ошибку здесь?
Я прочитал сообщение об ошибке, но не могу определить различные типы данных? Чего мне не хватает?
CREATE TABLE STAFF (
StaffLastname NVARCHAR(100) NOT NULL,
StaffFirstName NVARCHAR(100) NOT NULL,
StaffID NVARCHAR(100) NOT NULL,
PRIMARY KEY (StaffID)
);
CREATE TABLE WAREHOUSE(
WarehouseLocation NVARCHAR(100) NOT NULL,
PRIMARY KEY (WarehouseLocation)
);
CREATE TABLE CUSTOMER (
CustomerID NVARCHAR(50),
CustomerName NVARCHAR(100) NOT NULL,
CustomerAddress NVARCHAR(100) NOT NULL,
CustomerCity NVARCHAR(100) NOT NULL,
PRIMARY KEY (CustomerID)
);
CREATE TABLE COURSE (
CourseID NVARCHAR(25),
CourseName NVARCHAR(100) NOT NULL,
PRIMARY KEY (CourseID)
);
CREATE TABLE COURSE_OFFERING (
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
PRIMARY KEY (WarehouseLocation,CourseID,CourseDate),
FOREIGN KEY (CourseID) REFERENCES COURSE,
FOREIGN KEY (WarehouseLocation) REFERENCES WAREHOUSE
);
CREATE TABLE BOOKING (
CustomerID NVARCHAR(50) NOT NULL,
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
BookingDate DATE CHECK (LEN(BookingDate) = 8),
PaymentAmount MONEY CHECK (PaymentAmount > 0) NOT NULL,
Review NVARCHAR(100) NULL,
PRIMARY KEY (CustomerID, WarehouseLocation, CourseID, CourseDate),
FOREIGN KEY (WarehouseLocation, CourseID, CourseDate) REFERENCES COURSE_OFFERING,
FOREIGN KEY (CustomerID) REFERENCES CUSTOMER
);
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (StaffID) REFERENCES STAFF,
FOREIGN KEY (CourseDate, WarehouseLocation, CourseID) REFERENCES COURSE_OFFERING
);
ERROR MSG - - -- - - - - - - - - - -
(Затронута 1 строка) Сообщение 1778, уровень 16, состояние 0, строка 65 Столбец «COURSE_OFFERING.WarehouseLocation» не имеет того же типа данных, что и столбец ссылки «STAFF_ALLOCATION.CourseDate» во внешнем ключе «FK__STAFF_ALLOCATION__5D60DB10».
Сообщение 1750, уровень 16, состояние 1, строка 65 Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки.
2 ответа
Лучший ответ
В вашей последней таблице у вас есть внешний ключ, который имеет 3 столбца с таким порядком типов данных: DATE, NVARCHAR, NVARCHAR
И они ссылаются на таблицу, которая имеет 3 столбца с таким порядком типов данных:
NVARCHAR, NVARCHAR, ДАТА
Если вы измените свою последнюю таблицу на это:
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (StaffID) REFERENCES STAFF,
FOREIGN KEY (WarehouseLocation, CourseID, CourseDate) REFERENCES COURSE_OFFERING
Все будет хорошо, как в этой демонстрации
1
VBoka
15 Июл 2020 в 05:22
Настройте порядок столбцов в ПЕРВИЧНОМ КЛЮЧЕ в таблице ПРЕДЛОЖЕНИЕ КУРСА со столбцами в КЛЮЧЕВОМ КЛЮЧЕ в таблице STAFF_ALLOCATION. потому что раньше WarehouseLocation, CourseID, CourseDate = NVARCHAR, NVARCHAR, DATE при предложении курса CourseDate, WarehouseLocation, CourseID = DATE, NVARCHAR, NVARCHAR
CREATE TABLE COURSE_OFFERING (
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
PRIMARY KEY (WarehouseLocation,CourseID,CourseDate)
);
CREATE TABLE STAFF_ALLOCATION (
StaffID NVARCHAR(100) NOT NULL,
CourseDate DATE CHECK (LEN(CourseDate) = 8),
WarehouseLocation NVARCHAR(100) NOT NULL,
CourseID NVARCHAR(25) NOT NULL,
PRIMARY KEY (StaffID, CourseDate, CourseID, WarehouseLocation),
FOREIGN KEY (WarehouseLocation,CourseID,CourseDate) REFERENCES COURSE_OFFERING
);
0
Agung Panduan
15 Июл 2020 в 09:08
I’m trying to create a table with 3 columns. The first column should be an identity column named DescriptionsID, the second column should be a foreign key column named ProductID, and the third column should be an xml column named Description. But, I’m receiving an error:
Foreign Key ‘FK_ProductDescriptions_bacb18ce3aa67348e55d’ references invalid table ‘Product’ and «Could not create constraint or index. See previous errors.»
This is what I got:
CREATE TABLE ProductDescriptions (DescriptionsID int PRIMARY KEY NOT NULL,
ProductID varchar(25) NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
Description text NULL) ;
References Product(ProductID) has the error/red underlining
asked Nov 26, 2018 at 1:28
2
When you create a Referential Constraint, You Need to make sure that the Table and the Column which you are referring already exists in the Database.
Also, the Datatype of Both Referring Column and the Referred Column Should Be the Same
Column 'Product.ProductId' is not the same data type as referencing column
'ProductDescriptions.ProductID' in the foreign key
So Create Product Table First, and set the Product Id as Primary Key
CREATE TABLE Product
(
ProductId INT IDENTITY(1,1) PRIMARY KEY,
ProductName VARCHAR(50)
)
CREATE TABLE ProductDescriptions
(
DescriptionsID int PRIMARY KEY NOT NULL,
ProductID INT NOT NULL
,FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
[Description] text NULL
) ;
answered Nov 26, 2018 at 5:46
Когда вы создаете ссылочное ограничение, вам необходимо убедиться, что таблица и столбец, на которые вы ссылаетесь, уже существуют в базе данных.
Кроме того, тип данных ссылающегося столбца и указанного столбца должен быть одинаковым.
Column 'Product.ProductId' is not the same data type as referencing column
'ProductDescriptions.ProductID' in the foreign key
Итак, сначала создайте таблицу продуктов и установите идентификатор продукта в качестве первичного ключа
CREATE TABLE Product
(
ProductId INT IDENTITY(1,1) PRIMARY KEY,
ProductName VARCHAR(50)
)
CREATE TABLE ProductDescriptions
(
DescriptionsID int PRIMARY KEY NOT NULL,
ProductID INT NOT NULL
,FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
[Description] text NULL
) ;