#sql #sql-server #foreign-keys
#sql #sql-server #внешние ключи
Вопрос:
CREATE TABLE Parent
(
pID int IDENTITY(1,1) PRIMARY KEY,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
Email varchar(50) NOT NULL,
Address varchar(50) NOT NULL,
PersonalNumber int NOT NULL,
Phone varchar(50),
)
CREATE TABLE Student
(
sID int IDENTITY(1,1) PRIMARY KEY,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
Email varchar(50) NOT NULL,
Address varchar(50) NOT NULL,
PersonalNumber int NOT NULL,
Phone varchar(50),
-- causes error message
FOREIGN KEY (pID) REFERENCES Parent(pID),
);
Я получаю сообщение об ошибке:
Внешний ключ ссылается на недопустимую таблицу
Как мне это решить?
Спасибо.
Комментарии:
1. У вас нет pID в Student.
2. Это исправило ошибку в «(pID)», но та же ошибка остается в «родительском»
3. @Kazi Mohammad Ali Nur Я использую MSSQL
4. Перед последним
)
s стоят запятые. Однако это не приведет к этой конкретной ошибке, но код не будет работать.
Ответ №1:
Вы пропустили столбец pID в таблице student. Попробуйте это:
CREATE TABLE Parent (
pID int IDENTITY(1,1) PRIMARY KEY,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
Email varchar(50) NOT NULL,
Address varchar(50) NOT NULL,
PersonalNumber int NOT NULL,
Phone varchar(50)
);
CREATE TABLE Student(
sID int IDENTITY(1,1) PRIMARY KEY,
FirstName varchar(50) NOT NULL,
LastName varchar(50) NOT NULL,
Email varchar(50) NOT NULL,
Address varchar(50) NOT NULL,
PersonalNumber int NOT NULL,
Phone varchar(50),
pID int,
FOREIGN KEY (pID) REFERENCES Parent(pID)
);
Комментарии:
1. Это исправило ошибку в «(pID)», но та же ошибка остается в «родительском»
2. Внешний ключ ссылается на недопустимую таблицу ‘Parent’
3. Пожалуйста, попробуйте сейчас. Я удалил запятую (,);
4. Сначала создайте родительскую таблицу. Затем попробуйте создать Student.
5. Это работает, когда родительская таблица не существует. Но если я заранее создал родительскую таблицу, а затем создал таблицу student, я получаю указанное сообщение об ошибке.