2013-02-24 5 views
0

Вот моя формула в спецификации компьютера колонки в таблице под названием LoanSQL Server 2008 вычисляемых столбцов

(dateadd(month,(1),[CheckOutDate])) 

The (1) следует заменить loan_period из другой таблицы называется item_details.

Возможно ли это, и как будет выглядеть формула.

+2

Вам нужно создать UDF для этого - какова связь между двумя таблицами? – sgeddes

+1

Если вам нужно, чтобы это поле было рассчитано, я бы создал функцию db и использовал триггер для обновления поля, когда новая запись была вставлена ​​или, если потребуется, обновлена. [MS SQL] (http://msdn.microsoft.com/en-us/library/ms189799.aspx) –

+0

@sgeddes OK спасибо за очистку этого – Dynamiite

ответ

2

Computed columns относится только к столбцам в той же таблице, насколько мне известно.

Чтобы сделать то, что вы хотите здесь, вы можете определить TRIGGER в обеих таблицах, которые будут заполнять данные при изменении таблицы или (проще) создать VIEW.

0

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

E.g.

create table t (
    a int primary key, 
    b int 
) 
GO 

create function dbo.f(@a int) 
returns int 
as 
begin 
    return (select b from t where a = @a); 
end 
GO 

create table t2 (
    c int primary key, 
    d as dbo.f(c) 
) 
GO 

insert into t values (1, 2) 
insert into t2 (c) values (1) 

select * from t2 

N.B. При этом вы должны учитывать соображения производительности, и убедитесь, что по крайней мере у вас есть нужные индексы.

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