當前位置:首頁 » 操作系統 » 資料庫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;

熱點內容
java直播網站源碼 發布:2025-07-04 14:46:35 瀏覽:169
安卓應用市場消費記錄怎麼刪除 發布:2025-07-04 14:39:47 瀏覽:30
知道一個伺服器的ip地址 發布:2025-07-04 14:20:33 瀏覽:597
蘋果7鎖屏密碼怎麼改 發布:2025-07-04 14:04:44 瀏覽:710
P三零是什麼配置 發布:2025-07-04 13:58:41 瀏覽:361
哪個安卓機有長方形home鍵 發布:2025-07-04 13:43:58 瀏覽:861
android腳本錄制 發布:2025-07-04 13:17:47 瀏覽:342
嵌入式和安卓哪個硬體成本高 發布:2025-07-04 13:05:56 瀏覽:229
360代理伺服器怎麼設置 發布:2025-07-04 12:49:49 瀏覽:515
iphone在哪清除緩存 發布:2025-07-04 12:49:38 瀏覽:340