StudentSC Ответов: 2

Как установить SQL-команду identity insert в SQL?


Я хочу добавить набор идентификаторов из таблицы задач в таблицу учащихся.
И если в таблице задач есть идентификаторы, которых нет в таблице учащихся, Я хочу, чтобы они были добавлены. Я хочу получить записи из одной таблицы с таблицей задач. Я хочу добавить записи, если есть разные идентификаторы.


SET IDENTITY_INSERT dbo.Students ON

INSERT INTO dbo.Students (Id,Name,Surname,Class)
SELECT Id,Name,Surname,Class FROM dbo.TaskStudent where Students.ID NOT IN (Students.Id)

SET IDENTITY_INSERT dbo.Students OFF


Что я уже пробовал:

Я хочу вставить идентификатор набора таблиц student, но этот запрос дает ошибку set identity off.Как сделать установку identity insert?

MadMyche

Можете ли вы указать точное исключение?

[no name]

Я хочу добавить таблицу студенты задач с идентификатором в таблице студенты.
а если у него нет такого же идентификатора в таблице student

MadMyche

И что должно произойти, если этот идентификатор действительно существует?

2 Ответов

Рейтинг:
8

CHill60

Точное исключение, которое вы получили, было

Цитата:
Msg 4104, Уровень 16, Состояние 1, Строка 15
Многосоставный идентификатор "студенты.ID" не может быть связан.
Это не было ошибкой "отключения личности", что бы это ни значило.

Причина в том, что ваш оператор select полностью недействителен
INSERT INTO dbo.Students (Id,Name,Surname,Class)
SELECT Id,Name,Surname,Class FROM dbo.TaskStudent where Students.ID NOT IN (Students.Id)

Во-первых, вы имеете в виду Students.ID но выбирая из TaskStudent - вы, по крайней мере, должны обратиться к правильной таблице
INSERT INTO dbo.Students (Id,Name,Surname,Class)
SELECT Id,Name,Surname,Class FROM dbo.TaskStudent where TaskStudent.ID NOT IN (Students.Id)
Запустите его, и вы получите точно такое же исключение, но на этот раз только один раз. В этот раз (Students.Id) под ним красная волнистая линия.

Это потому, что нет такой вещи, как (Students.Id)!
Ты можешь ВЫБИРАТЬ удостоверения личности из стол Хотя студентка...
INSERT INTO dbo.Students (Id,Name,Surname,Class)
SELECT Id,Name,Surname,Class FROM dbo.TaskStudent where TaskStudent.ID NOT IN (Select Id from Students)
Затем ваш код вставит "недостающие" данные.

В этот момент я должен предложить вам спросить себя почему? вы бы хотели это сделать. Кроме того, зачем иметь две таблицы в одной базе данных, содержащие одну и ту же информацию? Я могу только надеяться, что это какая-то ситуация восстановления.

Я настоятельно рекомендую вам ознакомиться с основами нормализации базы данных и выбора данных из таблиц еще до того, как вы попытаетесь их использовать INDENTITY_INSERT ON/OFF


Maciej Los

Превосходно!

Рейтинг:
0

Gerry Schmitz

Ты просто выдумываешь все это на ходу, "инженер".

Цитата:
Когда вы вставляете в таблицу столбец идентификатора, вы не помещаете значение в столбец идентификатора.


Понимание Столбцов Идентичности - SQLTeam.com[^]


Maciej Los

5ed!