求助sql语句。。。。等待中。

leiyu1112 2004-10-25 10:41:53
首先用标准的sql语言创建数据库,
然后在数据库里面建表,两个表:dbuse1,dbuse2。
然后创建一个触发器。,当dbuse1里面的数据改变时改变的值,写进dbuse2
dbuse1字段:
useName,usePassword,email.
dbuse2字段:
usename,usepassword,email.
...全文
176 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-10-25
  • 打赏
  • 举报
回复
--建库
create database Db_test
go

--切换到新建的数据库
use Db_test
go

--建表
create table dbo.dbuse1
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)

create table dbo.dbuse2
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)
go

--建触发器
create trigger tr_process_dbuse1 on dbo.dbuse1
for insert,delete,update
as
if @@rowcount=0 return
delete a from dbo.dbuse2 a
where exists(
select * from deleted
where useName=a.useName
and usePassword=a.usePassword
and email=a.email)

insert dbo.dbuse2 select * from inserted
go
sql20041025 2004-10-25
  • 打赏
  • 举报
回复
联机帮助: 
create database
create table
create trigger
pbsql 2004-10-25
  • 打赏
  • 举报
回复
--若是使dbuse2保持与dbuse1数据一致,那就要改结构了:
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[dbuse1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE dbuse1 (id int identity(1,1),useName varchar(20),usePassword varchar(10),email varchar(20))
go

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[dbuse2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE dbuse2 (id int,useName varchar(20),usePassword varchar(10),email varchar(20))
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tr_1]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[tr_1]
GO

CREATE TRIGGER [tr_1] ON dbo.dbuse1
FOR insert,update,delete
AS
if not exists(select * from inserted)
delete from dbuse2 where exists(select * from deleted where id=dbuse2.id)--删除
else
if not exists(select * from deleted)
insert into dbuse2 select * from inserted--插入
else
update dbuse2 set useName=i.useName,usePassword=i.usePassword,email=i.email from inserted i,deleted d where i.id=d.id and i.id=dbuse2.id
go
pbsql 2004-10-25
  • 打赏
  • 举报
回复
1.建库
use master
go

if not exists (select * from sysdatabases where name='数据库')
create database 数据库
go

2.建表及触发器
use 数据库
go

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[dbuse1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE dbuse1 (useName varchar(20),usePassword varchar(10),email varchar(20))
go

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[dbuse2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE dbuse2 (useName varchar(20),usePassword varchar(10),email varchar(20))
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tr_1]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[tr_1]
GO

CREATE TRIGGER [tr_1] ON dbo.dbuse1
FOR insert,update,delete
AS
--你给的条件不足,无法写
go
leiyu1112 2004-10-25
  • 打赏
  • 举报
回复
等待中啊!怎么没人回我贴啊。
Andy__Huang 2004-10-25
  • 打赏
  • 举报
回复
CREATE TRIGGER TRIG_TabXY
ON dbuse1
AFTER INSERT
AS
IF exists(SELECT top 1 * FROM inserted)
BEGIN
INSERT INTO dbuse2(dept_no,person_no,sex,salary)
SELECT dept_no,person_no,sex,salary FROM inserted
PRINT 'dbuse1有記錄增加了,同時觸發dbuse2。'

END

GO

刪除與修改觸器也類似的
jackluo1981 2004-10-25
  • 打赏
  • 举报
回复
学习!
leiyu1112 2004-10-25
  • 打赏
  • 举报
回复
谢谢大家。
pbsql 2004-10-25
  • 打赏
  • 举报
回复
你不觉得触发器很没效率吗?
leiyu1112 2004-10-25
  • 打赏
  • 举报
回复
zjcxc(邹建) 能告诉我你的qq号码或者msn吗?
leiyu1112 2004-10-25
  • 打赏
  • 举报
回复
是的刚刚测试了,没问题谢谢你。
heibai520 2004-10-25
  • 打赏
  • 举报
回复
你没有先执行这两个建表原语句啊!
所是表对象无效啊!
你把邹大哥的代码全执行了就可以了!
create table dbo.dbuse1
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)

create table dbo.dbuse2
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)
go
zjcxc 元老 2004-10-25
  • 打赏
  • 举报
回复
上面是测试,没有问题的.
zjcxc 元老 2004-10-25
  • 打赏
  • 举报
回复
--建库
create database Db_test
go

--切换到新建的数据库
use Db_test
go

--建表
create table dbo.dbuse1
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)

create table dbo.dbuse2
(
useName nvarchar(20),
usePassword nvarchar(20),
email nvarchar(50)
)
go

--建触发器
create trigger tr_process_dbuse1 on dbo.dbuse1
for insert,delete,update
as
if @@rowcount=0 return
delete a from dbo.dbuse2 a
where exists(
select * from deleted
where useName=a.useName
and usePassword=a.usePassword
and email=a.email)

insert dbo.dbuse2 select * from inserted
go

--插入数据到 dbuse1
insert dbo.dbuse1 select'张三','11','a@a'
insert dbo.dbuse1 select'李四','12','a@a'
insert dbo.dbuse1 select'李三','12','a@a'
insert dbo.dbuse1 select'王五','13','a@a'

--更新
update dbo.dbuse1 set useName='张三丰' where usePassword=12

--删除
delete from dbo.dbuse1 where usePassword=13

--显示结果
select * from dbo.dbuse1
select * from dbo.dbuse2
go

--删除测试
use master
drop database Db_test

/*--测试结果
CREATE DATABASE 进程正在磁盘 'Db_test' 上分配 0.75 MB 的空间。
CREATE DATABASE 进程正在磁盘 'Db_test_log' 上分配 0.49 MB 的空间。

(所影响的行数为 0 行)


(所影响的行数为 1 行)


(所影响的行数为 0 行)


(所影响的行数为 1 行)


(所影响的行数为 0 行)


(所影响的行数为 1 行)


(所影响的行数为 0 行)


(所影响的行数为 1 行)


(所影响的行数为 2 行)


(所影响的行数为 2 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)

useName usePassword email
-------------------- -------------------- ---------------
张三 11 a@a
张三丰 12 a@a
张三丰 12 a@a

(所影响的行数为 3 行)

useName usePassword email
-------------------- -------------------- ---------------
张三 11 a@a
张三丰 12 a@a
张三丰 12 a@a

(所影响的行数为 3 行)

正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\Db_test_log.LDF'。
正在删除数据库文件 'd:\Program Files\Microsoft SQL Server\MSSQL\data\Db_test.mdf'。
--*/
leiyu1112 2004-10-25
  • 打赏
  • 举报
回复
zjcxc(邹建):
首先谢谢你回答我的问题。。
呵呵,还有谢谢所有回答我问题的人。。。。。。
zjcxc(邹建):

不过用你的方法创建的触发器存在错误。
Server: Msg 208, Level 16, State 4, Procedure tr_process_dbuse1, Line 1
Invalid object name 'dbo.dbuse1'.

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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