📄 创建db和lm01表.sql
字号:
--创建“留言板”数据库
create database [LeaveMessage];
go
use [LeaveMessage];
go
--------------------------END------------------------------
--创建LM01表(留言信息表)
create table [LM01](
[ID] varchar(18) primary key,
[User] varchar(18) not null,
[QQMSN] varchar(18) not null,
[Title] varchar(50),
[Contents] text not null,
[WriteBack] text,
[SubmitTime] datetime not null,
[Comment] varchar(100) --【未用】删除留言的注释(选取Contents的前几个字符即可)
);
go
--------------------------END------------------------------
/* --- 范例 ---
--创建临时表 tempTable(在此用于保存一次性要删除的多条留言的相关ID)
create table #tempTable(
[ID] varchar(18)
);
--删除临时表
drop table #tempTable;*/
--------------------------END------------------------------
--创建Delete触发器(另外用一个表保存被删除了的留言信息,预防需要恢复某些留言信息)
create trigger [delLM] on [LM01]
after delete
as
begin
set nocount on; --不返回受影响的行计数
declare @d_deleteTime datetime
set @d_deleteTime = getdate();
begin transaction --开始事务
insert into [BeenDeletedLM]
select [ID],[User],[QQMSN],[Title],[SubmitTime],@d_deleteTime,[Comment]
from deleted;
if @@error <> 0
begin
raiserror('Error, transaction not completed!', 16, -1)
rollback transaction --出现错误,回滚
end
commit transaction --事务结束
end
--创建暂存表 BeenDeletedLM
create table [BeenDeletedLM](
[ID] varchar(18),
[User] varchar(18),
[QQMSN] varchar(18),
[Title] varchar(50),
[SubmitTime] datetime,
[DeleteTime] datetime, --留言被删除的时间
[Comment] varchar(100)
);
--------------------------END------------------------------
--创建 存储过程 ——用于创建用户指定名称的表
create proc CreateTable
@table_name varchar(18)
as
if(@table_name = '')
begin
raiserror('table_name cannot be empty',10,1)
return -1
end
IF not EXISTS (SELECT name FROM [sysobjects]
WHERE name = @table_name AND type = 'U')
begin
declare @createtable varchar(200)
set @createtable='create table '+ @table_name+ ' (
[Title] varchar(50),
[Contents] text not null,
[WriteBack] text,
[SubmitTime] datetime not null)'
exec(@createtable)
end
ELSE
begin
declare @error varchar(100)
set @error = 'Have exist table ' + @table_name
raiserror(@error,10,1)
return -1
end
go
--------------------------create proc END------------------------------
--利用存储过程创建 a 表示例
exec CreateTable 'a'
--------------------------END------------------------------
--删除存储过程 CreateTable
drop proc CreateTable
--------------------------END------------------------------
--查询表
select * from LM01
select * from BeenDeletedLM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -