create table xxx(ID counter GUID primary key)  
  建立的表 ID 是integer类型的  
  怎么建立 GUID 类型的自动编号的主键?

解决方案 »

  1.   

    作者:cg1  摘自:access911.net  编辑:cg1  更新日期:2002-12-31  浏览人次:5477 专题地址: 
    http://www.access911.net/?kbid;71FAB01E15DC 简述: 
    用数据定义查询建立表的例子 
    阅读前需掌握: 
    难度等级: 
    等级未评定 
    看下面的查询 create table datatype(aa binary,bb bit,cc smallint,dd AUTOINCREMENT(2,4),ee money,ff datetime,gg guid,hh single default 50,ii double,jj smallint,kk long,ll image,mm memo,nn text(100),oo yesno not null,pp TINYINT,qq numeric(18,4)) 
    dd AUTOINCREMENT(2,4) 就是建立一个自动编号,初始为 2 ,步进为 4 的自动编号; 
    自动编号还有一种“自动编号 长整 随机”,代码为:[c] Autoincrement(1,1) default GenUniqueID(); 
    “自动编号 GUID”JET SQL DDL 语句目前(JET DB 4.0)无法创建,必须用 ADOX 或者 DAO 来创建,详细情况请参考: 
        如何用JET SQL DDL创建自动编号GUID字段 
        http://access911.net/?kbid;72FABE1E17DCEEF3 
    image 表示 “ole 对象”字段 
    money 表示 “货币” 字段 
    yesno 表示 “是/否” 字段 或者 bit 
    memo 表示 “备注” 字段 
    smallint 表示 “数字”“整型” 字段 
    TINYINT 表示 “数字”“字节” 字段 
    text 表示 “文本” 字段,后面的括号中的数字表示文本的长度,最长255 
    numeric(18,4) 表示“数字”“小数”字段,精度18,数值范围4 其中还用到一个关键字 default 表示默认值,如果要设定默认值为 50 则可以写成 default 50 
    还有一个关键字 not null 表示“必填”为“是” 
    请注意,如果含有 DEFAULT 来定义默认值,上述语句要用 ADODB.CONNECTION.EXECUTE 等方法来执行,直接用上述代码建立一个查询无法保存或者运行,会得到 ACCESS 的错误提示。 添加一个自动编号字段的代码如下: 
    alter table ColorSet add c AUTOINCREMENT(1,1) 
    注意,一个表只能有一个自动编号字段。 添加两个文本字段的代码如下: 
    alter table abc add ct text(255),cx text(200) 
    要知道如何建立查询请单击这里 
    单击这里查看原文 
    SQL 数据类型 
    Microsoft Jet 数据库引擎 SQL 数据类型 由13个基本数据类型组成,它们是由 Microsoft Jet 数据库引擎和几个验证过的有效同义字定义的。 下面的表格列出了主要数据类型。这些同义字在 Microsoft Jet 数据库引擎 SQL 保留字中被识别。 数据类型 存储大小 说明 
    BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。 
    BIT 1 个字节 Yes 和 No ,以及只包含这两个数值之一的字段。 
    TINYINT 1 个字节 介于 0 到 255 之间的整型数。 
    MONEY 8 个字节 介于  – 922,337,203,685,477.5808 到 922,337,203,685,477.5807 之间的符号整数。 
    DATETIME 
    (清参阅 DOUBLE ) 8 个字节 介于 100 到 9999 年的日期或时间数值。 
    UNIQUEIDENTIFIER 128 个位 用于远程过程调用的唯一识别数字。 
    REAL 4 个字节 单精度浮点数,负数范围是从 –3.402823E38 到 –1.401298E-45,正数从1.401298E-45 到 3.402823E38,和 0。 
    FLOAT 8 个字节 双精度浮点数,负数范围是从 –1.79769313486232E308 到 –4.94065645841247E-324,正数从 4.94065645841247E-324 到 1.79769313486232E308,和 0。 
    SMALLINT 2 个字节 介于 –32,768 到 32,767 的短整型数。 
    INTEGER 4 个字节 介于 –2,147,483,648 到 2,147,483,647 的长整型数。 
    DECIMAL 17 个字节 容纳从 1028 - 1到 - 1028 - 1. 的值的精确的数字数据类型。你可以定义精度 (1 - 28) 和 符号 (0 - 定义精度)。缺省精度和符号分别是18和0。 
    TEXT 每一字符两字节(参见注意) 从零到最大 2,14 千兆字节。  
    IMAGE 视实际需要而定 从零到最大 2,14 千兆字节。用于 OLE 对象。 
    CHARACTER 每一字符两字节(参见注意) 长度从 0 到 255 个字符。  
    -------------------------------------------------------------------------------- 注意 可以用ALTER TABLE 语句修正基数和增量。刚插进表中的行会有自动为基于新种值和增量值的列生成的值。如果新种和增长的值和以前的种值及增量匹配,就会造成复制。如果这个列是主键,复制值生成时可能导致错误。 定义成TEXT也称作MEMO)或CHAR(也称作有具体长度的 TEXT(n))的字段中的字符被储存在 Unicode 表示格式。Unicode字符一律需要两个字节存储每一字符。对于现有的主要包含字符数据的 Microsoft Jet数据库,这可能意味着数据库文件被转换成 Microsoft Jet 4.0格式时字长会增加将近一倍。然而,从前由单字节字符群(SBCS)指示的众多字符群的Unicode 表示可以很容易地被压缩成一个单字节。 有关的详细信息,参见 CREATE TABLE。如果用COMPRESSION属性定义CHAR列,数据存储时会自动被压缩,提取时解压缩。 
    ------------------------------------------------------------------------------------ 
    等效的 ANSI SQL 数据类型 
    下列表列出了 ANSI SQL 数据类型和等效的 Microsoft Jet 数据库引擎 SQL数据类型还有它们的有效同义字。并且列出了 等效的 Microsoft SQL服务器数据类型。 ANSI SQL 
    的数据类型 Microsoft Jet 
    SQL 的数据类型 
    同义字 Microsoft SQL 
    服务器数据类型 
    BIT,BIT VARYING BINARY(请参阅注意) VARBINARY, 
    BINARY VARYING 
    BIT VARYING BINARY, VARBINARY 
    不支持 BIT(请参阅注意) BOOLEAN,LOGICAL,LOGICAL1,YESNO BIT 
    不支持 TINYINT INTEGER2,SMALLINT TINYINT 
    不支持 COUNTER(参见注意) AUTOINCREMENT (参见注意) 
    不支持 MONEY CURRENCY MONEY 
    DATE,TIME,TIMESTAMP DATETIME DATE, TIME (参见注意) DATETIME 
    不支持 UNIQUEIDENTIFIER GUID UNIQUEIDENTIFIER 
    DECIMAL DECIMAL NUMERIC, DEC DECIMAL 
    REAL REAL SINGLE, FLOAT4, IEEESINGLE  REAL 
    DOUBLE PRECISION,FLOAT FLOAT DOUBLE, FLOAT8, IEEEDOUBLE, NUMBER (参见注意) FLOAT 
    SMALLINT SMALLINT SHORT, INTEGER2  SMALLINT 
    INTEGER INTEGER LONG, INT, INTEGER4 INTEGER 
    INTERVAL 不支持  不支持 
    不支持 IMAGE LONGBINARY, GENERAL, OLEOBJECT IMAGE 
    不支持 TEXT (参见注意) LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT (参见注意) TEXT 
    CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING CHAR (参见注意) TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING (参见注意) CHAR, VARCHAR, NCHAR, NVARCHAR 
    注意 ANSI SQL BIT数据类型与 the Microsoft Jet SQL BIT 数据类型不对应。而与 BINARY 数据类型对应。ANSI SQL 并没有等效于 Microsoft Jet SQL 的 BIT 的数据类型。 
    TIMESTAMP不再作为DATETIME的同义字被支持。 
    NUMERIC 不再作为 FLOAT或 DOUBLE的同义字被支持。NUMERIC现在被用作DECIMAL的同义字。 
    LONGTEXT字段总被储存于 Unicode 表示格式. 
    如果数据类型名 TEXT被使用而未说明任选长度,例如 TEXT(25), LONGTEXT字段会被创建。这使得 CREATE TABLE 语句能被写成让数据类型同 Microsoft SQL 服务器保持一致。 
    CHAR字段总被储存于 Unicode 表示格式,和 ANSI SQL NATIONAL CHAR 数据类型等效。 
    如果数据类型名 TEXT 被使用而未说明任选长度,例如 TEXT(25),则这一字段的数据类型与 CHAR 数据类型等效。这样既保持了对 Microsoft Jet应用程序的向后兼容,又使 TEXT 数据类型(没有长度说明) 能用 Microsoft SQL服务器定位。 
    本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。 access911.net 原创文章,作者本人对文章保留一切权利。 
    如需转载必须征得作者同意并注明本站链接 
      

  2.   

    这类问题去ACCESS版问更合适。
      

  3.   

    JET SQL DDL 语句不支持你的要求。你可以用 VBA DAO 来实现。或者可以用以下代码创建    如何用JET SQL DDL创建自动编号GUID字段《查询》
        http://access911.net/index.asp?u1=a&u2=72FABE1E17DCEEF3 --911--