2014-02-11 2 views
0

Основываясь на этом topic У меня возникла проблема со вставками.Вставить из выберите

Моя Tests таблица содержит:

TestID Name 
1  test_insert_film 
2  test_insert_writer 
3  test_insert_location 
4  test_delete_film 
5  test_delete_writer 
6  test_delete_location 

Я хочу, чтобы вставить в свои TestTables в идентификаторами тестов со следующей последовательностью:

INSERT INTO TestTables(TestID) 
    SELECT TestID 
    FROM Tests 

Но я получаю:

Msg 515, уровень 16, состояние 2, строка 1
Не удается вставить значение NULL в столбец «TableID», таблица «FilmS.dbo.TestTables»; столбец не допускает нулей. INSERT терпит неудачу. Заявление было прекращено.

TestTables содержит 4 колонки, один из которых: TestID. Почему это не работает?

+1

Перейдите к своему дизайнеру, и в списке столбцов вы должны отметить этот флажок, чтобы разрешить null для столбца TableID. Этот отказ, если он может разрешить нули, которые только вы знаете ... – Mez

+0

Вы должны указать значение для 'TableID' (** не **' TestID') для вашей таблицы 'TestTables' - вот что говорит ошибка. Вы не вставляете ничего в этот столбец .... –

ответ

3

Колонка TABLEID (!) В таблице TestTables не допускается NULL значения! Этот столбец не находится в списке столбцов, которые должны быть заполнены на INSERT, поэтому принятое по умолчанию значение равно NULL. Вот почему вы получаете ошибку.

Вам может понадобиться что-то вроде:

INSERT INTO TestTables(TestID, TableID) 
SELECT TestID, '' FROM Tests 

Чтобы заполнить TableID столбец со значением по умолчанию. Возможно, также затронуты и другие столбцы в таблице TestTables, и их нужно обрабатывать аналогичным образом.


PS: Вы можете также изменить в TestTables определение, чтобы обеспечить значение по умолчанию для соответствующих столбцов. Если вы это сделаете, вы можете оставить вышеуказанное заявление таким, какое оно есть.

Смежные вопросы