sql建表语句中直接写就行了
创新互联是专业的门头沟网站建设公司,门头沟接单;提供网站制作、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行门头沟网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
在java语句中,
String sql="SQL建表语句";
关于是否重复,首先要说一下uuid生成的原理
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
通过组成可以看出,首先每台机器的mac地址是不一样的,那么如果出现重复,可能是同一时间下生成的id可能相同,不会存在不同时间内生成重复的数据
至于说同一时间产生重复的数据,就目前来说,是不会的除非极高的高并发(如果发生了,也可以通过原子性操作避免),
所以基本上就认为不会重复好了
数据库的主键主要的功能就是唯一性,以下是我写的代码:
package NormalLearn;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 实现主键功能,每次生成的字符串唯一性
* @author Administrator
*
*/
public class OrclSeq{
/**
* 流水号=当前时间(8位)
* @return
*/
public synchronized String getCurrentValue(){
try {
//保证数据的唯一性
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String DateStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
return DateStr;
}
//线程内部类
class ThreadClass implements Runnable{
@Override
public void run() {
String seq = getCurrentValue();
System.out.println(seq);
}
}
public static void main(String[] args) {
//模拟多线程测试
OrclSeq seq = new OrclSeq();
for(int i=0;i1000;i++) {
new Thread(seq.new ThreadClass()).start();
}
}
}