INSERT INTO archivetitles

来源:互联网 发布:java获取访问者ip地址 编辑:程序博客网 时间:2024/05/21 10:41
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





/****** Object:  Stored Procedure dbo.spOrdersInsert   ******/
ALTER  PROCEDURE [dbo].[spOrdersInsert]
(
    @CustomerID INT,
    @CartID     VARCHAR(
50),
    @Memo        VARCHAR(
2000),
    @OrderID    INT OUTPUT
)
AS

-- 确保数据的一致性, 因而起用事务
BEGIN TRAN OrdersInsert

/* 产生订单 */
INSERT INTO Orders
(
    CustomerID,
    Memo
)
VALUES
(
    @CustomerID,
    @Memo
)

-- 返回当前所产生的OrderID
SELECT
    @OrderID 
= @@Identity    

/* 将当前用户的当前购物车COPY到当前所产生的ORDER明细中*/
INSERT INTO OrdersDetail
(
    OrderID, 
    ProductID, 
    Quantity, 
    UnitCost
)
------------------------有问题呀?????

SELECT 
    @OrderID, 
    ShoppingCart.ProductID, 
    Quantity, 
    Products.UnitCost

FROM 
    ShoppingCart 
  INNER JOIN Products ON ShoppingCart.ProductID 
= Products.ProductID
  
WHERE 
    CartID 
= @CartID


COMMIT TRAN OrdersInsert

 

 

 

 

通过 INSERT FROM 查询,可以将行从一个表复制到另一个表中或在同一个表内复制。例如,在 titles 表中,可以通过 INSERT FROM 查询,将有关某个出版商所有书籍的信息都复制到另一个表中,并使该表可由该出版商使用。 INSERT FROM 查询类似于生成表查询,不同的是将行复制到现有的表中。

提示   还可以通过剪切和粘贴的方法,将行从一个表复制到另一个表中。有关详细信息,请参见在结果窗格中添加新行。

创建 INSERT FROM 查询时指定: 

将行复制到的数据库表(目的表)。


从其中复制行的表(源表)。源表或表成为子查询的一部分。如果是在表内进行复制,则源表和目的表相同。


源表中要进行内容复制的列。


将数据复制到的目的表中的目标列。


定义要复制的行的搜索条件。


排序次序(如果要以特定的顺序对行进行复制)。


"分组"选项(如果只对汇总信息进行复制)。 
例如,下面的查询将书名信息从 titles 表复制到一个名为 archivetitles 的存档表中。该查询对属于某个出版商的所有书名的四列内容进行复制:

INSERT INTO archivetitles 
   (title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM titles
WHERE (pub_id 
= '0766')
注意   若要将值插入到新行中,请使用 INSERT INTO 查询。

可以对行中的选定列或所有列的内容进行复制。在任何一种情况下,所复制的数据都必须与要复制到的行中的列兼容。例如,如果复制某列(如 price 列)的内容,要复制到的行中的列必须接受带小数位数的数字型数据。如果要对整行进行复制,则目的表必须具有和源表的物理位置相同的兼容列。

当创建 INSERT FROM 查询时,网格窗格将更改以反映可用于复制数据的选项。添加了一个
"追加"列,以允许指定数据应复制到的列。

注意   不能撤消执行从中插入查询的操作。作为预防措施,请在执行 INSERT INTO 查询前备份数据。

创建 INSERT FROM 查询 

在查询设计器窗口右击,指向
"更改类型"菜单,然后选择"从中插入"命令。


在为 INSERT FROM 查询选择表对话框中,选择将行复制到的表(目的表)。 
注意   查询设计器无法事先确定可以更新哪些表和视图。因此,在
"为 INSERT FROM 查询选择表"对话框的"表名"列表中,将显示出所查询的数据连接中所有可用的表和视图,甚至包括或许不能将行复制到的那些表和视图。 

将要从中复制行的表(源表)添加到查询中。有关详细信息,请参见添加表。如果是在表内复制行,则可以将源表作为目的表添加。
源表中的数据列出现在关系图窗格的输入窗口中。


在表示表或表结构化对象的矩形中,选择要进行内容复制的列名。若要复制整行,请选择
"*(所有列)"。 
查询设计器将选择的列添加到网格窗格的
""列中。

在网格窗格的
"追加"列中,在目的表中为要复制的每列选择一个目标列。如果要复制整行,则选择表名.*。目的表中的各列必须与源表中的各列有相同(或兼容)的数据类型。


如果要以特定的顺序对行进行复制,请指定排序次序。有关详细信息,请参见对查询结果排序。


"准则"列中输入搜索条件以指定要复制的行。有关详细信息,请参见指定搜索条件。
如果没有指定搜索条件,则源表中的所有行都将被复制到目的表中。 
注意   当将要搜索的列添加到网格窗格时,查询设计器也将该列添加到待复制列的列表中。如果要将某列作为搜索条件但不对其进行复制,则在表示表或表结构化对象  的矩形中清除该列名旁边的复选框。 

如果要复制汇总信息,请指定
"分组"选项。有关详细信息,请参见汇总表中所有行的值。 
当执行 INSERT FROM 查询时,结果窗格中将不报告任何结果。而是显示一条消息指出已复制的行数。

 

 

下面的查询将书名信息从 titles 表复制到一个名为 archivetitles 的存档表中。该查询对属于某个出版商的所有书名的四列内容进行复制:

INSERT INTO archivetitles
   (title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM titles
WHERE (pub_id = '0766')

 

原创粉丝点击