当前位置:首页 » 操作系统 » 数据库TRG

数据库TRG

发布时间: 2023-01-15 15:53:24

1. 数据库中要用一段select case语句

select *
case
when userfen>400 then '金牌会员'
when userfen>300 and userfen <=400 then '银牌会员'
when userfen>200 and userfen <=300 then '铜牌会员'
else '注册会员'
end as '会员级别'
form tableName

2. 如何在数据库sql中定义一个触发器,并禁止更改职工表的职工年龄给出SQL语句即可

CREATETRIGGER trg_UpdateAge ON Staff AFTER UPDATE AS IF(UPDATE(age)) BEGIN DECLARE @OLDAGE INT; DECLARE @NEWAGE INT; SELECT @OLDAGE=age FROM deleted; SELECT @NEWAGE=age FROM inserted; IF(@NEWAGE<>@OLDAGE) BEGIN PRINT '禁止更改职工表的职工年龄'; ROLLBACK TRAN; END END GO 我这里的Age是你数据库中相对应的字段名,Staff是想对应的表名。

麻烦采纳,谢谢!

3. 合并复制的发布与订阅

合并复制必须先初始化发布服务器和订阅服务器,然后才能在它们之间传递数据。 本主题提供有关初始化期间所进行的操作的信息。 下表列出了发布的初始化操作的详细信息,在您执行列出的每个存储过程时,或在完成新建发布向导后,都会发生这些初始化操作。 在为发布首次运行快照代理后,会发生进一步的初始化。
sp_replicationdboption
将发布数据库标记为要进行复制。 除非删除复制,否则不能删除该数据库。
将系统表添加到发布数据库中(除非该数据库中已存在合并发布)。 有关系统表的完整列表,请参阅本主题中的“在发布数据库和订阅数据库中创建的系统表”部分。
sp_addmergepublication
将发布项添加到系统表中。
sp_addpublication_snapshot
将快照代理作业添加到 SQL Server 代理系统中。 作业名称的格式为 <发布服务器>-<发布数据库>-<发布>-<整数>。
sp_addmergearticle
将复制的每个对象标记为要进行复制。 除非从所有发布中删除对象的相应项目,否则不能删除对象。
将代表每个项目的条目添加到系统表中。
发布数据库的其余初始化操作在为发布首次运行快照代理时执行(以后运行快照代理时,不会重新初始化发布数据库)。 如果使用新建发布向导,默认情况下会在完成向导后创建初始快照。 如果使用存储过程,则必须运行代理作业或直接运行代理。 有关运行代理的详细信息,请参阅如何启动和停止复制代理 (SQL Server Management Studio)和复制代理可执行文件概念。
为发布首次运行快照代理:
在每个已发布的表中添加一个名为 rowguid的列,除非表中已有一个数据类型为 uniqueidentifier 并具有 ROWGUIDCOL 属性集的列(这种情况下将使用此列)。 rowguid列用于唯一标识每个已发布表中的每一行。 如果从发布中删除表,将删除 rowguid列;如果将现有列用于跟踪,则不删除该列。
在发布数据库中为每个已发布的表创建下列对象(所有对象都在 dbo架构中创建):
将插入、更新和删除触发器添加到已发布的表中,以跟踪更改。 触发器的命名格式为 MSmerge_ins_<GUID>、MSmerge_upd_<GUID>和 MSmerge_del_<GUID>。 GUID 值从系统表 sysmergearticles中项目的项派生而来。
创建存储过程以处理已发布表的插入、更新和删除操作,并执行与复制相关的其他一些操作。
创建视图以管理插入、更新、删除和筛选操作。
创建冲突表以存储冲突信息。 冲突表与已发布表的架构相匹配: 为每个已发布的表编写脚本,然后用脚本在发布数据库中创建冲突表。 冲突表的命名格式为 dbo.MSmerge_conflict_<发布>_<项目>。
每次运行快照代理时,都会为发布数据库中的每个项目创建下列类型的文件(带有相应的文件扩展名):
架构 (.sch)
约束和索引 (.dri)
触发器 (.trg)
系统表数据 (.sys)
冲突表 (.cft)
数据 (.bcp) -- 不会为使用参数化筛选器的发布创建。
如果发布不使用任何参数化筛选器,快照会将已发布表的数据包含在一组 .bcp 文件中。 如果发布使用参数化筛选器(对于合并发布通常如此),初始快照将不包含任何数据。 将使用订阅服务器分区的快照提供数据,这将在“初始化订阅”部分进行讨论。 每个订阅都在订阅的合并代理运行并将初始快照复制到订阅数据库时进行初始化。 除了已复制对象的架构和数据之外,快照还包含发布数据库中存在的系统表、视图、触发器和存储过程(还会将一个或两个额外的系统表复制到订阅数据库中)。 有关系统表的完整列表,请参阅本主题中的“在发布数据库和订阅数据库中创建的系统表”部分。 如果重新初始化订阅,将覆盖所有已复制对象和复制系统对象。
如果发布数据库中的任何表都未使用参数化筛选器,则向每个订阅服务器上复制相同的发布快照。 如果使用了一个或多个参数化筛选器,则每个订阅的初始化方式将由下列逻辑决定:
如果在命令行中为合并代理提供了快照位置:
则从此位置应用快照。
否则,如果快照是预生成的:
则从发布数据库中的 MSmerge_dynamic_snapshots检索快照的位置,并从该位置应用快照。
否则,如果发布允许订阅服务器初始化快照:
如果已经为具有同一分区的其他订阅服务器生成了快照,则将该快照应用于订阅服务器。
否则,将生成快照并将其应用于订阅服务器。
否则,将对发布中的表使用 SELECT 语句初始化订阅服务器。 此方法要比使用订阅服务器分区的快照慢得多。
如果快照传输在任一点中断,它将自动恢复并且不再重新发送已经全部传输的任何文件。 对于每个发布项目,快照代理的传递单位是bcp 文件,因此已部分传递的文件必须全部重新传递。 不过,恢复快照可以大幅度减少传输的数据量,即便在连接不可靠的情况下也可以确保及时进行快照传递。 有关创建快照的详细信息,请参阅带有参数化筛选器的合并发布的快照。

4. 数据库触发器问题

CREATE TABLE score (
id INT PRIMARY KEY,
val VARCHAR(10)
);

CREATE TRIGGER tr_Update_score
ON score
instead of update
AS
BEGIN
IF USER_NAME() = 'dbo'
UPDATE
score
SET
score.val = inserted.val
FROM
score JOIN inserted
ON (score.id = inserted.id)
ELSE
PRINT '你不是 DBO!';
END;

insert into score VALUES(1, 'A');

-- 使用 Demo 作为用户名,登录到数据库。
E:\>sqlcmd -S "localhost\SQLEXPRESS" -U Demo -P demo
1> use testwork
2> go
已将数据库上下文更改为 'TestWork'。
1> UPDATE score SET val='B' WHERE id = 1;
2> go

(1 行受影响)
你不是 DBO!
1> select * FROM score;
2> go
id val
----------- ----------
1 A

(1 行受影响)

-- 使用操作系统验证,登录到数据库。
E:\>sqlcmd -S "localhost\SQLEXPRESS"
1> use testwork
2> go
已将数据库上下文更改为 'TestWork'。
1> UPDATE score SET val='B' WHERE id = 1;
2> go

(1 行受影响)
1> select * FROM score;
2> go
id val
----------- ----------
1 B

(1 行受影响)

======================

--货物表
CREATE TABLE stock(
id INT,
stock_amount INT
);

--订单表
CREATE TABLE sell(
ID INT,
GoodsID INT,
sell_amount INT
);

-- 库存测试数据:
INSERT INTO stock VALUES (1, 100);

create trigger trgAfterSell
on sell
after insert
as
begin
declare
@cGoodsID as int,
@sell_amount as int,
@nowCount as INT

select @cGoodsID = GoodsID, @sell_amount = sell_amount
from inserted

SELECT @nowCount = stock_amount
FROM stock
where ID = @cGoodsID;

IF @nowCount - @sell_amount < 0
BEGIN
PRINT '库存量不足,只有 ' + CAST(@nowCount AS varchar);
ROLLBACK;
END
ELSE
BEGIN
update stock
set stock_amount = stock_amount - @sell_amount
where ID = @cGoodsID
PRINT '库存量还剩余' + CAST ((@nowCount - @sell_amount) AS varchar);
END
end

1> INSERT INTO sell VALUES(1, 1, 90);
2> go

(1 行受影响)
库存量还剩余10
1> INSERT INTO sell VALUES(1, 1, 20);
2> go
库存量不足,只有 10
消息 3609,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
事务在触发器中结束。批处理已中止。
1> select * from sell;
2> select * from stock;
3> go
ID GoodsID sell_amount
----------- ----------- -----------
1 1 90

(1 行受影响)
id stock_amount
----------- ------------
1 10

(1 行受影响)

5. 请求高手帮忙,一个关于SQL2008数据库触发器的问题

create trigger Trg_Tmark on TSappraisa
for insert
as
update a.TSappraisal set Tgrade = (
case when b.Tmark between 90 and 100 then '优秀'
when b.Tmark between 80 and 89 then '良'
when b.Tmark between 70 and 79 then '中'
when b.Tmark between 60 and 69 then '及格'
else '不及格' end )
from TSappraisal a ,inserted b
where a.学号 = b.学号

很显然,你的触发器用法有问题,你应该仔细看看触发器的要领,对于insert产生的触发,你可能要从inserted表中来获取插入的数据,而你的例子中没有看到
你的updata 更新时没有指定条件,将会修改所有的记录,你应该对应到插入产生的新记录上,所以你必须使用inserted表
二楼的也能达到你要的效果,但前提是你一个SQL语句只能插入一条新记录,如果你使用insert into ... select ...一次插入多条记录,将只会修改最后一条插入记录的TSappraisal 值

6. mysql idb frm trg trn是什么文件

【MySQL文件】

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)
应用软件之一。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

MySQL文件就是SQL文件,里面就是建表语句 以.SQL为后缀。SQL脚本是包含一到多个SQL命令的SQL语句。以将这些SQL脚本放在一个文本文件中(SQL脚本文件),然后通过相关的命令执行这个SQL脚本文件。

【IDB文件】

IDB智能数据库系统(multimedia intelligent database system)是一个对象数据库管理系统。智能数据库是研究利用人的推理、想象、记忆原理,实现对数据库的存储、搜索和修改。通过有效的组织,能够满足人们快速检索和修改数据库的要求。

IDB文件是一种 MSDev 中间层文件。当IDB文件在IDA打开,数据解压到的文件的集合。后的数据库被关闭时,该文件被压缩回IDB文件。这使得更快的性能,同时在数据库打开和较低的磁盘使用时关闭。

< H1 >其他IDB格式: < /H1 >在调试过程中由一个Visual Studio程序中创建的中间文件,如Visual C, 节省了编译器的状态,并用于最小的重建计划和增量编译。

【PAR文件】

PAR文件为交换文件,主要是Windows环境下的文件名 。绝大多数DOS文件名后缀在Windows下继续有效,但Windows本身也引出了许多种崭新的后缀名,如:*.drv为设备驱动程序(Driver)、*.fon和*.fot都是字库文件、*.grp为分组文件(Group)、*.ini为初始化信息文件 (Initiation)、*.pif为DOS环境下的可执行文件在Windows下执行时所需要的文件格式、*.crd即卡片文件(Card)、*.rec即记录器宏文件(Record)、*.wri即文本文件(Write),它是字处理write.exe生成的文件、*.doc和*.rtf也是文本文件(Document),它们是Word产生的文件、*.cal为日历文件、*.clp是剪贴板中的文件格式、*.htm和
*.html即主页文件、*.par为交换文件、*.pwl为口令文件(Password)等等。

【FRM文件】

FRM文件是文本类型文件,用记事本就可以打开,而且也可以保存。

FRM文件扩展名信息:

1.表单;

2.Frame Maker或Frame Builder文档;

3.Oracle可执行表(3.0版或早期版本);

4.Visual Basic表单;

5.WordPerfect Merge表单;

6.DataCAD标志报表文件。

7. 您好 问下sqlserver中当数据库表的某个字段发生改变 删除另外一张表的数据 触发器怎么写

--创建测试表
create table t_a(id int,name varchar(10));
create table t_b(id int,name varchar(10));
--测试数据
insert into t_a(id,name) values (1,'a');
--创建 for delete 触发器
create trigger trg_t_a_1
on t_a
for delete
as
begin
insert into t_b
select id,name from deleted;
end
--从t_a中删除一条数据
delete from t_a where id=1;

8. 求助: 创建一个数据库表,字段为id,name

sqlserver的就不说了,楼上已经给出来了,有错误你稍加改动一下就可以,
给你个oracle的,相对sqlserver比较麻烦

--先建表
create table abc (id int,
name varchar2(10));
--建立一个sequence
create sequence seq_abc
minvalue 1
maxvalue 2000000000
start with 1
increment by 1
nocache
order;
--为abc表建立自增触发器
create or replace trigger trg_abc
before insert on abc for each row
begin
select seq_abc.nextval into :new.id from al;
end;
--插入数据
insert into abc(name) values ('test1');
insert into abc(name) values ('test2');
--提交
commit;

9. oracle数据库中数据表主键自动增长

3:创建触发器,创建一个触发器,当所设置
字段
数据变化时触发相关事件
create
or
replace
trigger
trg_seq_pid
BEFORE
insert
ON
mobilePhone
FOR
EACH
ROW
begin
select
seq_pid
.nextval
into:New.pid
from
al;
end
trg_seq_pid
;
该触发器
含义
为当往表mobilePhone
中插入数据时userid字段的值从序列
seq_pid
中取数插入。

10. oracle数据库表中如何设置时间戳

创建个触发器就可以了。
测试脚本如下:
1、创建测试表GetSysDate_Test:
create table GetSysDate_Test(t_id number,t_date date);
2、编写触发器trg_test:
create or replace trigger trg_test
before insert on GetSysDate_Test
for each row
when (new.t_date is null)
declare
begin
select sysdate into :new.t_date from al;
end trg_test;
3、插入一条数据看效果:
insert into GetSysDate_Test(t_id)values(1);
commit;
select * from GetSysDate_Test;

热点内容
电脑服务器市场 发布:2025-07-04 19:14:06 浏览:503
没签名只加密 发布:2025-07-04 18:54:38 浏览:255
红米手机存储问题 发布:2025-07-04 18:50:43 浏览:843
水电煤算法 发布:2025-07-04 18:36:44 浏览:330
天翼视讯缓存文件夹 发布:2025-07-04 18:36:43 浏览:97
unix网络编程第2卷 发布:2025-07-04 18:33:41 浏览:782
编译历史 发布:2025-07-04 18:23:01 浏览:852
空调压缩机种类 发布:2025-07-04 18:13:58 浏览:243
中国有ip6服务器吗 发布:2025-07-04 17:58:56 浏览:727
第六章编译原理答案 发布:2025-07-04 17:37:55 浏览:40