将修订与数据库表字段相结合

时间:2013-11-27 12:58:51

标签: sql sql-server vb6

我有兴趣了解解决我发现自己面临的数据库问题的正确方法。

我有一张表(约45列),其中包含有关库存的信息,价格以及与其包装,折扣等相关的大量信息。

通过在多个地方构建TSQL查询,使用ADO(VB6)通过Web应用程序访问库存。

现在需要保留一个新表格,其中包含上述列的精简列表,以允许某些用户覆盖来自源的部分股票信息(主要是描述等)。

我遇到的问题是提出一种方法(可能)构建两个表的视图,以便软件仍然认为它正在与第一个表交谈(更改软件只是一个不行的)实际上它是由第二个修改的第一个表,也许是通过某种UNION。

举一个简单的例子,假设您有一个库存表:

CREATE TABLE Stock
(
    id int NOT NULL,
    ref varchar(20) NOT NULL,
    short_description varchar(50) NOT NULL,
    long_description varchar(255) NOT NULL,
    ...many other columns
)

和修正表如下:

CREATE TABLE StockAmendments
(
    id int NOT NULL,
    ref varchar(20) NOT NULL,
    short_description varchar(50) NOT NULL
)

我们的想法是将Stock重命名为StockSource并构建一个名为Stock的视图,该视图会修改StockSource StockAmendments(在这种情况下可能是{1}}不同的short_description)。这样软件就不需要知道变化了。

这可能吗?

2 个答案:

答案 0 :(得分:1)

这应该是可行的。我很久没有做过t-sql了,但是这样的话:

CREATE VIEW Stock 
AS
SELECT 
  ss.id, 
  ss.ref, 
  iif(isnull(sa.short_description), ss.short_description, sa.short_description)) as short_description, 
  ss.long_description
FROM StockSource ss, StockAmendments sa
WHERE ss.id = sa.id AND ss.ref = sa.ref

有一点需要担心的是查询性能取决于索引等。如果这是一个问题,你可能最好根据StockSource创建一个真正的'Stock'表并在StockAmendments上设置触发器以更新'Stock 'table。

答案 1 :(得分:0)

是的,可以使用可更新的视图。

将Stock重命名为StockSource并构建可更新的视图Stock over StockSource和StockAmendments。这样您就不必对VB6代码进行任何更改。