|
Калькулируемое поле.
|
|||
---|---|---|---|
#18+
Есть ли возможность изменить обычное поле на калькулируемое, т.е. Есть таблица: Create table MyTable1 ( Price money, Quantity money, Amount money, PaymentDate datetime ) А надо: Create table MyTable1 ( Price money, Quantity money, Amount as (Price * Quantity) money, PaymentDate datetime ) Проблема в следующем: 1. В таблице уже есть данные. 2. Много связей. 3. Поле должно остаться на своем месте. В идеале выполнить такое предложение: Alter table MyTable1 alter column Amount as (Price * Quantity). Еще хотелось бы узнать есть ли готовые инструменты для изменения порядкового номера колонки в таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2001, 17:11 |
|
Калькулируемое поле.
|
|||
---|---|---|---|
#18+
Желание иметь в таблице калькулируемое поле противоречит требованию к нормализации таблиц. Ни одно не ключевое поле не должно функционально зависить от других неключевых полей. Таких полей в эффективно работающей базе быть не должно. Если уж действительно надо иметь такое поле, используйте представление (view) по таблице без этого поля. Существующее поле можно оставить, а потом использовать для чего-либо полезного, которое может появится в будущем. Если это поле сильно увеличивает базу, то единственный путь - Create table _MyTable1 ( Price money, Quantity money, PaymentDate datetime ) insert into _MyTable1 (Price,Quantity,PaymentDate) select Price,Quantity,PaymentDate from MyTable1 Потом MyTable1 уничтожить, а _MyTable1 переименовать в MyTable1 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2001, 21:57 |
|
Калькулируемое поле.
|
|||
---|---|---|---|
#18+
В жизни бывает всякое и иногда для практ.целей БД, наоборот, приходится денормализовывать. Типич.пример - OLAP-приложения. Выч.поля - вещь полезная, более того, в 2000-м по ним можно еще и индексы создавать. Изменить поле на вычисляемое при помощи ALTER COLUMN, очевидно, не удастся, т.к. в нем уже есть данные и что делать, если они противоречат формуле? Поэт. проходит т. ADD COLUMN. Вообще говоря, в терминах SQL порядок полей никак не определяется и не задается. Придется создать новую таблицу и переписать данные из старой. Даже если представить себе, что существовала бы гипот.команда ALTER TABLE, меняющая физ.порядок следования полей в табл., проку от нее было бы очень мало, т.к. по времени это все равно созд-е новой стр-ры и перекачка в нее данных из старой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2001, 13:11 |
|
|
start [/forum/topic.php?fid=46&msg=32002648&tid=1827282]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 131ms |
0 / 0 |