SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER TRIGGER Buy_BefToPo_tD ON dbo.Buy_BefToPo
FOR DELETE
AS
begin
declare @errno int,
@errmsg varchar(255),@i int,@j int,@vMPONum chrpaperno
if Exists(select t1.*
from Buy_PODtl t1(nolock),
deleted t2(nolock)
where t1.SourceNo = t2.SourceNo
and t1.SourceItem =t2.SourceItem)
begin
select @errno = 33333, @errmsg = ' 已轉訂購不可刪除 !! '
goto error
end
if Exists(select ProtDate
from deleted (nolock)
where isnull(ProtDate,'')!=' ')
begin
select @errno = 33333, @errmsg = ' 已輸入保固期限不可刪除 !! '
goto error
end
if @@Error <> 0
begin
select @errno=39999,@errmsg='發生錯誤__(Buy_BefToPo)_1'
goto Error
end
return
error:
raiserror @errno @errmsg
rollback transaction
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
-----2.聚集索引、非聚集索引(索引建立后存和取的數據才會按照索引排序,之前的數據不會排
序)
CREATE CLUSTERED INDEX [index_Buy_BefToPo]
ON [dbo].[Buy_BefToPo]([Sourceno], [SourceItem])
ON [PRIMARY]
GO
----------------------------------------------------
CREATE INDEX [index_Buy_BefToPo]
ON [dbo].[Buy_BefToPo]([Sourceno], [SourceItem])
ON [PRIMARY]
GO
-----------3.遊標
declare @i int,@j int,@dt datetime
select @i=0,@j=0
declare c cursor for select dt from @ruku order by dt
open c
fetch next from c into @dt
while @@fetch_status=0
begin
select @i=@i+rukusf from @ruku where dt=@dt
select @j=@j+rukumoney from @ruku where dt=@dt
insert into @temp
select items='入庫面積 (SF)',type='累計',@dt,@i
insert into @temp
select items='入庫金額 (USD)',type='累計',@dt,@j
fetch next from c into @dt
end
close c
deallocate c
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sql基礎知識------------------------
新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARYKEY ,
[字段1] nVarChar(50) default \'默认值\' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)
删除表:
Drop table [表名]
插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES(100,\'51WINDOWS.NET\')
删除数据:
DELETE FROM [表名] WHERE [字段名]>100
更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\'
新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]
修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename \'表名\', \'新表名\', \'OBJECT\'
新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= \'2000-1-1\')
删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名
新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名]
删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名
删除Sql Server 中的日志,减小数据库文件大小
dump transaction 数据库名 withno_log
backup log 数据库名 with no_log
dbcc shrinkdatabase(数据库名)
exec sp_dboption \'数据库名\',\'autoshrink\', \'true\'
\\\'添加字段通用函数
Sub AddColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Add\"&ColumnName&\" \"&ColumnType&\"\")
End Sub
\\\'更改字段通用函数
Sub ModColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Alter Column\"&ColumnName&\" \"&ColumnType&\"\")
End Sub
\\\'检查表是否存在
sql=\"select count(*) as dida from sysobjectswhere id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') =1\"
set rs=conn.execute(sql)
response.write rs(\"dida\")\'返回一个数值,0代表没有,1代表存在
判断表的存在:
select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') andOBJECTPROPERTY(id, N\'IsUserTable\') = 1
某个表的结构
select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1
本文介绍了SQL触发器的使用,包括设置标识符、非空属性、错误处理及数据库索引建立、游标操作等核心内容。同时,阐述了如何进行SQL基本操作如创建表、插入、删除、更新数据、添加、删除、修改字段、新建和删除约束、默认值等,为数据库管理提供全面指南。

5187

被折叠的 条评论
为什么被折叠?



