Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизВ MSSQL Найти похожие ветки
← →
___Nikolay (2003-12-13 10:45) [0]В MSSQL создаю автоинкрементное поле указав его как Identity Column, при мануальном заполнении счетчик отрабатывается, при программном - пишет, что поле ID должно иметь значение, но
Table.FieldByName("ID").AsInteger := ..
выдает оштбку, т.к. поле автоинкрементное!
Возможно не достает триггера..
До этого работал, под Interbase/FireBird
Подскажите пожалуйста как в MSSQL с "генераторами" работать?
← →
sniknik (2003-12-13 11:09) [1]а ты туда ничего не вноси, он на то и автоинкремент сам установится.
если при редактировании в гриде тоже выдает, то у поля укажи (попробуй его прописать руками там видно. двойной клик по датасету) что оно AutoInc и все.
← →
___Nikolay (2003-12-13 11:51) [2]"AutoInc" я указывал в окне свойств таблицы MSSQL MMC (в консоле)
Там конкретно "AutoInc" написано не было.. был список целочисленных полей и заголовок Identity Column, после того как я выбрал из списка ID - это поле начало само заполняться при заполнении таблицы в той же консоли "ручками", но может это не "AutoInc" или что? Если при выполнении кода
with Table do
begin
Append;
// ID не заполняю !!!
FieldByName("").As...
FieldByName("").As...
FieldByName("").As...
Post;
end;
вываливается ошибка, что "полю ID должно быть присвоено значение"
Как можно написать триггер на MSSQL аналогичный Interbase
CREATE TRIGGER AI_TASKS_ID FOR TASKS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_ID_TASKS, 1);
END
Как в MSSQL называется NEW? (GEN_ID, видимо, вообще нет..)
Подскажите pls!.........
← →
elena_mm (2003-12-13 13:00) [3]Если поле идентити, то ничего не нужно делать лишнего, тригеров в том числе, оно работает автоматически.
← →
JibSkeart (2003-12-13 13:14) [4]Действительн
зачем какието лишние махинации с табличкой .
если поле автоинкреиментное .
← →
sniknik (2003-12-13 13:32) [5]JibSkeart © (13.12.03 13:14) [4]
"махинации" нужны в какихто случаях, не всегда компоненты понимают что поле автоинкрементное (не сталкивался но вопросы видел, понимаю так бывает от длинных связок MSSQL->ODBC->BDE->Table или/и старых драйверов) и пытаются записать туда значение или Null если значения нет.
(если смотреть в профайлере то Table генерирует запрос типа INSERT INTO xxxx (ID, ....) VALUES (Null, ...))
в этом случае надо явно указывать что значения не нужно.
обычно и так понимают.
← →
JibSkeart (2003-12-13 13:35) [6]хмм это действительно странно.
← →
Evgeny V (2003-12-13 13:47) [7]Для поля ID в редакторе полей для Table посмотри свойство Required, если true, поставь false
← →
____Nikolay (2003-12-14 10:14) [8]2 Evgeny V
Не получилось :(
2 ALL
Спасибо!
После того, как использовал ADO, все нормально заработало
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c