Alexander_UA
Дата: 15.10.2005 16:33:49
Есть ли или будет ли когда-то в ADO возможность определить default значения полей для новой записи? Ведь нехорошо же закладывать присвоение этих значений в приложении? А если не присваивать, то до форма редактирования записи выглядит пустой и пользователь не имеет никакой возможности знать, что что-то там имеет Default значение. Это тоже не хорошо, IMHO. Кто как это решает?
Alexander_UA
Дата: 31.10.2005 14:00:07
Неправильно поняли. Я имел в виду реально установленные в БД значения полей.
Например
create table tblCustomer (
CustomerID INT not null,
Name VARCHAR(15) not null,
Gender BIT not null default 0,
Changed DATETIME not null default now(),
constraint PK_CUSTOMER primary key (CustomerID)
)
...
Поле Gender в этом примере имеет default значение 0, а поле Changed - now().
Как наилучшим образом реализовать интерфейс для редактирования указанных полей в новой записи этой таблицы?
1) Можно просто забыть про установки default в БД. При этом пользователь правда будет удивлен тому, то после сохранения записи эти поля изменились, хотя он их значения и не определял.
2) Можно заложить логику присвоения default в приложение. При этом в окне редактирования новой записи пользователь действительно увидет, что некоторые поля уже заполнены предположительными значениями, которые он может затем изменить. Но, у этого подхода есть минус - если по-каким то причинам в БД изменятся условия default, например
Gender BIT not null default 1,
или добавятся новые, то приложение либо будет по прежнему инициализировать Gender для новой записи нулем, либо, для новых default по прежнему не инициализировать эти поля указанными default значениями.
И наконец:
3) Если бы кто-то подсказал, как получать информацию из БД о default, то при создании новой записи приложение сразу бы инициализировало поля default значениями согласно БД. Вот в этом и состоит мой вопрос.
Alexander_UA
Дата: 02.11.2005 16:14:15
Вот, вот... Но годится этот запрос не для каждой поддерживаемой ADO базы данных. Поэтому у меня и возник такой "крик души", о том, чтобы поддержка требуемой функциональности была заложена в ADO.
Alexander_UA
Дата: 02.11.2005 16:52:03
Можно воспользоваться
recset := ADOConnection.ConnectionObject.OpenSchema(adSchemaColumns, ...)
но на том же MS SQL результат возвращается не для всех пользователей - включается работа системы прав. Но и не давать же права менеджера пользователю только для того, чтобы получить defaults ?
veon
Дата: 19.09.2010 23:19:00
создал таблицу MySQL
CREATE TABLE `Account` (
`id` int(10) unsigned NOT NULL auto_increment,
`nickName` varchar(45) NOT NULL,
`created` timestamp NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
создал по ней модель.
Как заставить ADO.Net не сетить timestamp в БД а прочитать его как и id?
В свойствах поля вижу только Default Value:(None),
Store Generated Pattern - похоже по описанию, но не работает