如何给主关键字自动赋值?
希望能自动产生一些值,这些值永远不重复,删除一条记录后再插入时也不重复,最好还能是升序或者降序排列
提供实用的例子就加分
问题点数:30、回复次数:6Top
1 楼ePing(是谁动了我的CSDN的ID?)回复于 2001-02-02 19:02:00 得分 23
在数据库中一般都有自动增量这种方式实现,比如说在SqlServer
中,例子:
USE pubs
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'new_employees')
DROP TABLE new_employees
GO
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
fname varchar (20),
minit char(1),
lname varchar(30)
)
INSERT new_employees
(fname, minit, lname)
VALUES
('Karin', 'F', 'Josephs')
INSERT new_employees
(fname, minit, lname)
VALUES
('Pirkko', 'O', 'Koskitalo')
划线处就是实现部分!
Top
2 楼halfone(蛮牛)回复于 2001-02-02 19:03:00 得分 1
coCreateGuid() 不会重复。而且升序。Top
3 楼qkl(康)回复于 2001-02-02 19:20:00 得分 2
ePing(三少)的是一种方法.
还有其他方法:在SQL server中先定义一序列数,后用在触发器中调用赋值,或者在通过存储过程取序列数在客户端调用赋值;在paradox中用"+"定义字段,也可自动增量;Top
4 楼yuanhui2000(yuanhui)回复于 2001-02-02 21:23:00 得分 0
大家能不能提供一种编码方法,要求主关键字中的值一不重复,而且又是有意义的编码,比如可以根据编码分析出其所在部门.政治面貌等,最好不用存取过程和sql语句,给我提供一个用函数解决的办法是最好不过了
我们现在用的方法是先遍历整个表,找出最大值,然后将最大值加一,但是当删掉其中一个后,被删掉的那个编号将永远空着,并且觉得若是已有记录达到一万条左右时,添加一条记录明显变慢
因为我们delphi脚本语言编写,对有些东西支持不是很好,所以希望大家能提供一个实用的方法Top
5 楼SAsura(爱我别走)回复于 2001-02-02 22:30:00 得分 3
SQLServer有没有自动增量类型Paradox和Access里面都有。Top
6 楼lwm8246(lwm8246)回复于 2001-02-02 22:36:00 得分 1
最好的办法是在触发器(insert)中实现.相对来说速度较快.c/s就应该充分发挥后台数据库的
功能。Top




