zoukankan      html  css  js  c++  java
  • 关于sql server中主键的一点研究

    sql server中对于主键的查询没有直接的方法,如果使用ado.net进行查询的话,返回的结果集如果是datatable类型的,一般并不包含主键信息,需要设置MissingSchemaAction,如何在sql语句中查询主键信息,经过一番周折,终于搞出来了,下边直接贴代码吧:

    数据库代码:

    代码
    USE [TestDB]
    GO
    /****** Object:  Table [dbo].[province]    Script Date: 09/27/2010 23:11:37 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[province](
        
    [pid] [int] IDENTITY(1,1NOT NULL,
        
    [pname] [varchar](128NOT NULL,
        
    [posttime] [datetime] NOT NULL,
     
    CONSTRAINT [PK_province] PRIMARY KEY CLUSTERED 
    (
        
    [pid] ASC
    )
    WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
    ON [PRIMARY]
    GO
    SET ANSI_PADDING OFF
    GO
    /****** Object:  Table [dbo].[testkey]    Script Date: 09/27/2010 23:11:37 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[testkey](
        
    [id] [int] NOT NULL,
        
    [pk1] [nchar](10NOT NULL,
        
    [pk2] [nchar](10NOT NULL,
        
    [pk3] [nchar](10NOT NULL,
        
    [posttime] [datetime] NULL,
        
    [pid] [int] NOT NULL,
     
    CONSTRAINT [PK_testkey] PRIMARY KEY CLUSTERED 
    (
        
    [id] ASC,
        
    [pk1] ASC,
        
    [pk2] ASC,
        
    [pk3] ASC
    )
    WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
    ON [PRIMARY]
    GO
    /****** Object:  Default [DF_province_posttime]    Script Date: 09/27/2010 23:11:37 ******/
    ALTER TABLE [dbo].[province] ADD  CONSTRAINT [DF_province_posttime]  DEFAULT (getdate()) FOR [posttime]
    GO
    /****** Object:  ForeignKey [FK_testkey_province]    Script Date: 09/27/2010 23:11:37 ******/
    ALTER TABLE [dbo].[testkey]  WITH CHECK ADD  CONSTRAINT [FK_testkey_province] FOREIGN KEY([pid])
    REFERENCES [dbo].[province] ([pid])
    GO
    ALTER TABLE [dbo].[testkey] CHECK CONSTRAINT [FK_testkey_province]
    GO

     下面是我最终获取主键的方法:

    代码
    declare @tmpkey table(id varchar(64))
    declare @tablename varchar(256)
    set @tablename = 'testkey'
    declare @tmp  varchar(64)
    declare @i int
    set @i = 1
    while @i <= 16
    begin
        
    select @tmp = index_col(@tablename1@i)
        
    if not @tmp is  null
        
    insert into @tmpkey select @tmp
        
    set @i = @i + 1
    end
    select * from @tmpkey

    总结:感觉学的越多,越感觉自己无知,要学的东西还很多很多,第一篇,希望大家多多拍砖。 

  • 相关阅读:
    Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用
    Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
    Java sun.misc.Unsafe类的学习笔记
    Java 并发编程学习笔记 理解CLH队列锁算法
    深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
    Java并发编程学习笔记 深入理解volatile关键字的作用
    JVM Client Server启动设置
    双重检查锁定与延迟初始化
    Tomcat 添加为系统服务 开机自动启动
    配置TOMCAT 修改默认ROOT路径
  • 原文地址:https://www.cnblogs.com/supperniu/p/1837189.html
Copyright © 2011-2022 走看看