[sql server] 修改一个字段的属性
alter table MyTable alter column myCol tinyint not null
alter table MyTable alter column myCol tinyint not null
耗尽时,JDBC会报异常:Address already in use 起初我以为是因为WINDOWS XP对TCP连接数的限制,换了windows 2003,还是报这个错 后来我加上了连接池,在XP下测试,这个问题不在发生
TRUNCATE TABLE 权限默认授予表所有者、sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员且不可转让。
如果在一个unqiue的字段上先后插入 "pig" 和 "PIG",会报错 如果一个非unique字段col上有两个值分别为“pig”和"PIG",那么select * from animal where col = ‘pig’会把这两个值都返回
select * from OPENDATASOURCE( ‘SQLOLEDB’, ‘Data Source=ServerName;User ID=MyUID;Password=MyPass’ ).dbname.dbo.tablename
从左到右分别是: 外键约束名,子表名,外键列名,父表名 select fk.name fkname , ftable.name ftablename, cn.name fkcol, rtable.name ftablename from sysforeignkeys join sysobjects fk on sysforeignkeys.constid = fk.id join sysobjects ftable on sysforeignkeys.fkeyid = ftable.id join sysobjects rtable on sysforeignkeys.rkeyid = rtable.id join syscolumns cn on sysforeignkeys.fkeyid = cn.id and sysforeignkeys.fkey = cn.colid
<a href="http://www.cnblogs.com/asdcer/archive/2007/05/14/746377.html">点这里</a>
一个对象在业务逻辑上是一棵树,那它在数据库里就是由若干个表通过外键关联组成的树。 如何从数据库中取出这棵树? 比较优雅的做法是采用先序遍历的办法:先从树根表读出树根,在JAVA世界变成树根Bean,然后用同样的办法读出它的子树,再把子树BEAN设置为树根的属性。 这种做法优雅是优雅,但是速度慢,因为查一次,就要跟数据库服务器连一次,就要增加一次数据库IO。这是不行的。即使用了数据库连接池,开销还是很大 为了减少网络开销,应该先将数据从数据库中一次性取出,然后拿到JAVA世界中进行拆解。这样速度可以明显改善,代价是编程麻烦。 在数据库端要写一个存储过程,先读出树根记录到一个临时表,然后再将子树表逐个与该临时表连接,查出子树记录放入子树临时表,然后再将“孙”树表。。。,最后返回各个临时表的记录集。 在JAVA程序这边,还要用原始的JDBC语句一步一步地处理这种多重结果集,然后又一个一个地拆解
利用导出向导可以导出此类数据,要注意的是,在导出时要选择“为多个表优化”,否则会出现主健不能写入数据的问题;“在事务中运行”最好也选上,如果发生异常,可以全部回滚 不过,利用导出向导导出数据时,要保证目标表都不存在或者都是空表,否则主外健的对应会与源表不一样。 举个例子,假设son表参考了father表,在源数据库里,假设son表中的第1条记录参考了father表的第1条记录(设主健值为1);复制数据时如果目标数据库中的father表中已有1000条数据(设主健值为1至1000),则源father表中的第1条记录拷到目标father表,第1条记录的主健值就变成了1001,而源son表复制到目标son表后,第1条记录参考的仍是father表中的主键1的记录! =================================================== 如果源表的最小的主健值为1000,而目标表不存在,拷贝后,目标表的主健值也是从1000开始 ================================================== 如果目标表不存在,则建成的目标表没有任何主外健约束 ================================================== 如果源表的主键是1,3,5,拷到已存在且刚建好的目标表后,主键会变成1,2,3