求一段修改表结构的代码--不难但是可能有些麻烦!

blue_snow 2003-10-16 03:09:18
修改前的表的脚本
CREATE TABLE [dbo].[hr_pay_rec] (
[rowid] [uniqueidentifier] NOT NULL ,
[orgid] [int] NOT NULL ,
[payday] [smalldatetime] NULL ,
[edbase] [varchar] (200) NOT NULL ,
[taxbase] [varchar] (250) NOT NULL ,
[mplus] [varchar] (250) NOT NULL ,
[mminus] [varchar] (250) NOT NULL ,
[spay] [varchar] (200) NOT NULL ,
[apay] [varchar] (200) NOT NULL ,
[tcard] [varchar] (200) NOT NULL ,
[sumoftotal] [numeric](10, 2) NOT NULL ,
[sumofactual] [numeric](10, 2) NOT NULL ,
[calcbase1] [numeric](8, 2) NOT NULL ,
[calcbase2] [numeric](8, 2) NOT NULL ,
[calcbase3] [numeric](8, 2) NOT NULL ,
[keepid] [bit] NOT NULL ,
[abstractid] [bit] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[hr_pay_rec] ADD
CONSTRAINT [DF_hr_pay_rec_rowid] DEFAULT (newid()) FOR [rowid],
CONSTRAINT [DF_hr_pay_rec_edbase] DEFAULT ('') FOR [edbase],
CONSTRAINT [DF_hr_pay_rec_taxbase] DEFAULT ('') FOR [taxbase],
CONSTRAINT [DF_hr_pay_rec_mplus] DEFAULT ('') FOR [mplus],
CONSTRAINT [DF_hr_pay_rec_mminus] DEFAULT ('') FOR [mminus],
CONSTRAINT [DF_hr_pay_rec_spay] DEFAULT ('') FOR [spay],
CONSTRAINT [DF_hr_pay_rec_apay] DEFAULT ('') FOR [apay],
CONSTRAINT [DF_hr_pay_rec_tcard] DEFAULT ('') FOR [tcard],
CONSTRAINT [DF_hr_pay_rec_sumoftotal] DEFAULT (0) FOR [sumoftotal],
CONSTRAINT [DF_hr_pay_rec_sumofactual] DEFAULT (0) FOR [sumofactual],
CONSTRAINT [DF_hr_pay_rec_calcbase1] DEFAULT (0) FOR [calcbase1],
CONSTRAINT [DF_hr_pay_rec_calcbase2] DEFAULT (0) FOR [calcbase2],
CONSTRAINT [DF_hr_pay_rec_calcbase3] DEFAULT (0) FOR [calcbase3],
CONSTRAINT [DF_hr_pay_rec_keepid] DEFAULT (0) FOR [keepid],
CONSTRAINT [DF_hr_pay_rec_abstractid] DEFAULT (0) FOR [abstractid],
CONSTRAINT [PK_hr_pay_rec] PRIMARY KEY NONCLUSTERED
(
[rowid]
) ON [PRIMARY] ,
CONSTRAINT [IX_hr_pay_rec] UNIQUE NONCLUSTERED
(
[orgid],
[payday]
) ON [PRIMARY]
GO

修改后的表
CREATE TABLE [dbo].[hr_pay_rec] (
[rowid] [uniqueidentifier] NOT NULL ,
[id] [int] IDENTITY (1, 1) NOT NULL ,
[salaryname] [nvarchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
[orgid] [int] NOT NULL ,
[payday] [smalldatetime] NULL ,
[edbase] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[taxbase] [varchar] (250) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[mplus] [varchar] (250) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[mminus] [varchar] (250) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[spay] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[apay] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[tcard] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sumoftotal] [numeric](10, 2) NOT NULL ,
[sumofactual] [numeric](10, 2) NOT NULL ,
[calcbasename] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[calcbase1] [numeric](8, 2) NOT NULL ,
[calcbase2] [numeric](8, 2) NOT NULL ,
[calcbase3] [numeric](8, 2) NOT NULL ,
[lister] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[isvoucher] [tinyint] NULL ,
[keepid] [bit] NOT NULL ,
[abstractid] [bit] NOT NULL ,
[note] [nvarchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[auditid] [tinyint] NOT NULL ,
[auditopinion] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[typeid] [tinyint] NOT NULL ,
[taxid] [bit] NULL ,
[operationid] [tinyint] NULL ,
[taxitem] [tinyint] NULL ,
[taxmode] [bit] NULL ,
[taxtype] [bit] NULL ,
[mergetaxtable] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[taxstartpoint] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[calcformulanote] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[salaryitemname] [nvarchar] (1000) COLLATE Chinese_PRC_CI_AS NULL ,
[GiveState] [tinyint] NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[hr_pay_rec] ADD
CONSTRAINT [DF_hr_pay_rec_rowid] DEFAULT (newid()) FOR [rowid],
CONSTRAINT [DF_hr_pay_rec_edbase] DEFAULT ('') FOR [edbase],
CONSTRAINT [DF_hr_pay_rec_taxbase] DEFAULT ('') FOR [taxbase],
CONSTRAINT [DF_hr_pay_rec_mplus] DEFAULT ('') FOR [mplus],
CONSTRAINT [DF_hr_pay_rec_mminus] DEFAULT ('') FOR [mminus],
CONSTRAINT [DF_hr_pay_rec_spay] DEFAULT ('') FOR [spay],
CONSTRAINT [DF_hr_pay_rec_apay] DEFAULT ('') FOR [apay],
CONSTRAINT [DF_hr_pay_rec_tcard] DEFAULT ('') FOR [tcard],
CONSTRAINT [DF_hr_pay_rec_sumoftotal] DEFAULT (0) FOR [sumoftotal],
CONSTRAINT [DF_hr_pay_rec_sumofactual] DEFAULT (0) FOR [sumofactual],
CONSTRAINT [DF_hr_pay_rec_calcbase1] DEFAULT (0) FOR [calcbase1],
CONSTRAINT [DF_hr_pay_rec_calcbase2] DEFAULT (0) FOR [calcbase2],
CONSTRAINT [DF_hr_pay_rec_calcbase3] DEFAULT (0) FOR [calcbase3],
CONSTRAINT [DF_hr_pay_rec_isvoucher] DEFAULT (0) FOR [isvoucher],
CONSTRAINT [DF_hr_pay_rec_keepid] DEFAULT (0) FOR [keepid],
CONSTRAINT [DF_hr_pay_rec_abstractid] DEFAULT (0) FOR [abstractid],
CONSTRAINT [DF_hr_pay_rec_auditid] DEFAULT (0) FOR [auditid],
CONSTRAINT [DF_hr_pay_rec_typeid] DEFAULT (1) FOR [typeid],
CONSTRAINT [DF_hr_pay_rec_taxid] DEFAULT (0) FOR [taxid],
CONSTRAINT [DF_hr_pay_rec_operationid] DEFAULT (0) FOR [operationid],
CONSTRAINT [DF_hr_pay_rec_taxitem] DEFAULT (1) FOR [taxitem],
CONSTRAINT [DF_hr_pay_rec_taxmode] DEFAULT (0) FOR [taxmode],
CONSTRAINT [DF_hr_pay_rec_taxtype] DEFAULT (0) FOR [taxtype],
CONSTRAINT [DF_hr_pay_rec_mergetaxtable] DEFAULT ('') FOR [mergetaxtable],
CONSTRAINT [DF_hr_pay_rec_taxstartpoint] DEFAULT ('') FOR [taxstartpoint],
CONSTRAINT [DF_hr_pay_rec_GiveState] DEFAULT (0) FOR [GiveState],
CONSTRAINT [PK_hr_pay_rec] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO


谢谢大家了!
...全文
23 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_snow 2003-10-16
  • 打赏
  • 举报
回复
可是我在sqlserver里已经手工修改了这个表呀,并且也插入了好多数据,并没有报错
我现在只是想知道使用sql的话具体应该怎么写?
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
参考联机帮助:

下表说明在 Microsoft SQL Server 数据库中定义的,或在 Transact-SQL 语句中引用的各种对象的最大值(数量或大小)。下表不包含 Microsoft® SQL Server 2000™ Windows® CE 版。


每行字节数 8,060
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
SQL中,每个表的每条记录的存储长度不能超过8K
pengdali 2003-10-16
  • 打赏
  • 举报
回复
你修改后的表的所有的列加起来的占用空间长度超过了8K,如:create table a(a varchar(8000),b varchar(1)) 你a列就占了8k后面的b列就是错的,虽然你可以建立,但在使用中。你的某条记录如果超过了8k 就会报错。你将无法插入或修改。
aierong 2003-10-16
  • 打赏
  • 举报
回复
blue_snow 2003-10-16
  • 打赏
  • 举报
回复
不太明白,能否说的更清楚一些
pengdali 2003-10-16
  • 打赏
  • 举报
回复
警告: 已创建表 'hr_pay_rec1',但其最大行大小(8095)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。


你要定义两个表来做这个表应为它超过了sqlserver每条记录不能大于8k的限制。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧