导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

遇到一个奇怪的问题,不知如何解决。

tjoy 2003-12-22 03:09:01
使用sqlserver建立一个数据库,成功后,用sql语句新建数据表,结果由于字段类型错误未能通过(大约是7、8张表),将sql语句修改正确后在查询分析器中运行报错,错误是对象已经存在。但是在企业管理器中看不到,用select * from 表名,也看不到,但是同样的语句换个表名就能建。后来建了一个新库,不是原来的那个库,执行原来的sql语句还是报同样的错误。但是后来又发现如果新建的表我不加主键,表明还用原来的,就可以成功。不知以上问题是什么原因,请各位大虾不吝赐教。(絮絮叨叨象唐僧,不知道我说清楚了没有。)
...全文
6 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjoy 2003-12-23
就是就是。呵呵,不好意思。
回复
--光顾测试错误,没有注意主键的问题,SQL中,应该用:

if exists(select 1 from sysobjects where id=object_id('utime') and objectproperty(id,'Isusertable')=1)
drop table utime
go
create table utime(
ID varchar(20) not null Constraint bgrz primary key, --写在这里就行了.
username varchar(20),
ip varchar(15),
staytime datetime
)
回复
tjoy 2003-12-23
我现在问题解决了,就是空着主键,然后用管理器把主键加上。但是究竟是什么原因导致的还是不明白。
回复
tjoy 2003-12-23
建哥,那句定义主键的语句不是sqlserver中的呀。
回复
tjoy 2003-12-23
哈哈,不好意思,建主键的方式错了。写成oracle的了。sorry!sorry!
回复
--用下面的语句,我的电脑上运行了N次都成功.我的SQL是2000

if exists(select 1 from sysobjects where id=object_id('utime') and objectproperty(id,'Isusertable')=1)
drop table utime
go
create table utime(
ID varchar(20),
username varchar(20),
ip varchar(15),
staytime datetime,
Constraint bgrz Primary key(id)
);
回复
tjoy 2003-12-23
create table utime(
ID varchar(20),
username varchar(20),
ip varchar(15),
staytime datetime,
Constraint bgrz Primary key(id)
);
这是建表的语句。关于是否刷新的问题,我的确是刷新了,看不到那些表。到后来直接又重建了一个新库,还是建不上。如果我把最后一句去掉,就是不加主键就能成功。
回复
LoveSQL 2003-12-22
我觉得你的问题好像是用户所有者的问题,可能是你每次的登入用户不同,所创建的表就是属于不同的用户。。。
这样你的sql 语句的表名前要加上所有者。。
如下
select * from 所有者.表名
回复
snowsalt 2003-12-22
将SQL语句写出来。
回复
--一般建议这样写建表的语句

if exists (select * from dbo.sysobjects where id = object_id(N'[表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [表]
GO
create table 表( id int)


回复
语句贴出来.
回复
Coolyu0916 2003-12-22
你刷新一下
应当可以看到
最好在建表之前测试一下
如果存在删除
然后再建立
回复
victorycyz 2003-12-22
看起来象是刷新不及时,并不是库中真的没有表。
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告