一个关于sql数据合并与更新的问题。

wschuxuezhe 2017-03-22 11:12:32
我有三张表 结构如图


我现在需要把用户名 用户密码 管理员账号 管理员密码都输入到登录名与登录密码中
并且当另外两张表数据发生修改时 最后一张表也能自动修改 我该怎么操作?
...全文
591 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 47 楼 sinat_28984567 的回复:
[quote=引用 46 楼 wschuxuezhe 的回复:] [quote=引用 45 楼 sinat_28984567 的回复:] [quote=引用 44 楼 wschuxuezhe 的回复:] [quote=引用 43 楼 sinat_28984567 的回复:] 我自己做了一遍,对比着看看你的有啥问题不 创建用户表
CREATE TABLE [dbo].[用户表](
	[userid] [INT] IDENTITY(1,1) NOT NULL,
	[用户名] [NVARCHAR](50) NULL,
	[用户密码] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED 
(
	[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
创建登录表
CREATE TABLE [dbo].[登录表](
	[登录名] [NVARCHAR](50) NOT NULL,
	[登录密码] [NVARCHAR](50) NULL,
	[Bid] [INT] NULL
) ON [PRIMARY]

GO
给用户表插入数据
INSERT INTO dbo.用户表
        ( 用户名, 用户密码 )
VALUES  ( N'测试1', -- 用户名 - nvarchar(50)
          N'123'  -- 密码 - nvarchar(50)
          )
给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
    FOR UPDATE  --更新触发
AS
    DECLARE @id INT;
    DECLARE @name NVARCHAR(100);
    DECLARE @password NVARCHAR(100);
     
    SELECT  @id = userid   ,
            @name = 用户名   ,
            @password = 用户密码  
    FROM    Inserted;
 
    BEGIN
        UPDATE  登录表
        SET     登录名  = @name ,
                登录密码  = @password
        WHERE   Bid = @id 
 
    END
初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
        ( 登录名, 登录密码, Bid )
        SELECT  用户名 ,
                用户密码 ,
                userid
        FROM    dbo.用户表
更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1
查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表
我建立表都是右键表,然后用设计改的 并不是用的代码。。[/quote] 这没区别。。。。。[/quote] .. 还是不行。。 [/quote] 我无能为力了。 [/quote] 好吧 我也放弃了0 0 我从别的地方改吧 谢谢大大了
二月十六 2017-03-24
  • 打赏
  • 举报
回复
引用 46 楼 wschuxuezhe 的回复:
[quote=引用 45 楼 sinat_28984567 的回复:] [quote=引用 44 楼 wschuxuezhe 的回复:] [quote=引用 43 楼 sinat_28984567 的回复:] 我自己做了一遍,对比着看看你的有啥问题不 创建用户表
CREATE TABLE [dbo].[用户表](
	[userid] [INT] IDENTITY(1,1) NOT NULL,
	[用户名] [NVARCHAR](50) NULL,
	[用户密码] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED 
(
	[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
创建登录表
CREATE TABLE [dbo].[登录表](
	[登录名] [NVARCHAR](50) NOT NULL,
	[登录密码] [NVARCHAR](50) NULL,
	[Bid] [INT] NULL
) ON [PRIMARY]

GO
给用户表插入数据
INSERT INTO dbo.用户表
        ( 用户名, 用户密码 )
VALUES  ( N'测试1', -- 用户名 - nvarchar(50)
          N'123'  -- 密码 - nvarchar(50)
          )
给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
    FOR UPDATE  --更新触发
AS
    DECLARE @id INT;
    DECLARE @name NVARCHAR(100);
    DECLARE @password NVARCHAR(100);
     
    SELECT  @id = userid   ,
            @name = 用户名   ,
            @password = 用户密码  
    FROM    Inserted;
 
    BEGIN
        UPDATE  登录表
        SET     登录名  = @name ,
                登录密码  = @password
        WHERE   Bid = @id 
 
    END
初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
        ( 登录名, 登录密码, Bid )
        SELECT  用户名 ,
                用户密码 ,
                userid
        FROM    dbo.用户表
更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1
查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表
我建立表都是右键表,然后用设计改的 并不是用的代码。。[/quote] 这没区别。。。。。[/quote] .. 还是不行。。 [/quote] 我无能为力了。
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 45 楼 sinat_28984567 的回复:
[quote=引用 44 楼 wschuxuezhe 的回复:] [quote=引用 43 楼 sinat_28984567 的回复:] 我自己做了一遍,对比着看看你的有啥问题不 创建用户表
CREATE TABLE [dbo].[用户表](
	[userid] [INT] IDENTITY(1,1) NOT NULL,
	[用户名] [NVARCHAR](50) NULL,
	[用户密码] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED 
(
	[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
创建登录表
CREATE TABLE [dbo].[登录表](
	[登录名] [NVARCHAR](50) NOT NULL,
	[登录密码] [NVARCHAR](50) NULL,
	[Bid] [INT] NULL
) ON [PRIMARY]

GO
给用户表插入数据
INSERT INTO dbo.用户表
        ( 用户名, 用户密码 )
VALUES  ( N'测试1', -- 用户名 - nvarchar(50)
          N'123'  -- 密码 - nvarchar(50)
          )
给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
    FOR UPDATE  --更新触发
AS
    DECLARE @id INT;
    DECLARE @name NVARCHAR(100);
    DECLARE @password NVARCHAR(100);
     
    SELECT  @id = userid   ,
            @name = 用户名   ,
            @password = 用户密码  
    FROM    Inserted;
 
    BEGIN
        UPDATE  登录表
        SET     登录名  = @name ,
                登录密码  = @password
        WHERE   Bid = @id 
 
    END
初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
        ( 登录名, 登录密码, Bid )
        SELECT  用户名 ,
                用户密码 ,
                userid
        FROM    dbo.用户表
更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1
查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表
我建立表都是右键表,然后用设计改的 并不是用的代码。。[/quote] 这没区别。。。。。[/quote] .. 还是不行。。
二月十六 2017-03-24
  • 打赏
  • 举报
回复
引用 44 楼 wschuxuezhe 的回复:
[quote=引用 43 楼 sinat_28984567 的回复:] 我自己做了一遍,对比着看看你的有啥问题不 创建用户表
CREATE TABLE [dbo].[用户表](
	[userid] [INT] IDENTITY(1,1) NOT NULL,
	[用户名] [NVARCHAR](50) NULL,
	[用户密码] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED 
(
	[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
创建登录表
CREATE TABLE [dbo].[登录表](
	[登录名] [NVARCHAR](50) NOT NULL,
	[登录密码] [NVARCHAR](50) NULL,
	[Bid] [INT] NULL
) ON [PRIMARY]

GO
给用户表插入数据
INSERT INTO dbo.用户表
        ( 用户名, 用户密码 )
VALUES  ( N'测试1', -- 用户名 - nvarchar(50)
          N'123'  -- 密码 - nvarchar(50)
          )
给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
    FOR UPDATE  --更新触发
AS
    DECLARE @id INT;
    DECLARE @name NVARCHAR(100);
    DECLARE @password NVARCHAR(100);
     
    SELECT  @id = userid   ,
            @name = 用户名   ,
            @password = 用户密码  
    FROM    Inserted;
 
    BEGIN
        UPDATE  登录表
        SET     登录名  = @name ,
                登录密码  = @password
        WHERE   Bid = @id 
 
    END
初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
        ( 登录名, 登录密码, Bid )
        SELECT  用户名 ,
                用户密码 ,
                userid
        FROM    dbo.用户表
更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1
查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表
我建立表都是右键表,然后用设计改的 并不是用的代码。。[/quote] 这没区别。。。。。
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 43 楼 sinat_28984567 的回复:
我自己做了一遍,对比着看看你的有啥问题不 创建用户表
CREATE TABLE [dbo].[用户表](
	[userid] [INT] IDENTITY(1,1) NOT NULL,
	[用户名] [NVARCHAR](50) NULL,
	[用户密码] [NVARCHAR](50) NULL,
 CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED 
(
	[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
创建登录表
CREATE TABLE [dbo].[登录表](
	[登录名] [NVARCHAR](50) NOT NULL,
	[登录密码] [NVARCHAR](50) NULL,
	[Bid] [INT] NULL
) ON [PRIMARY]

GO
给用户表插入数据
INSERT INTO dbo.用户表
        ( 用户名, 用户密码 )
VALUES  ( N'测试1', -- 用户名 - nvarchar(50)
          N'123'  -- 密码 - nvarchar(50)
          )
给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
    FOR UPDATE  --更新触发
AS
    DECLARE @id INT;
    DECLARE @name NVARCHAR(100);
    DECLARE @password NVARCHAR(100);
     
    SELECT  @id = userid   ,
            @name = 用户名   ,
            @password = 用户密码  
    FROM    Inserted;
 
    BEGIN
        UPDATE  登录表
        SET     登录名  = @name ,
                登录密码  = @password
        WHERE   Bid = @id 
 
    END
初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
        ( 登录名, 登录密码, Bid )
        SELECT  用户名 ,
                用户密码 ,
                userid
        FROM    dbo.用户表
更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1
查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表
我建立表都是右键表,然后用设计改的 并不是用的代码。。
二月十六 2017-03-24
  • 打赏
  • 举报
回复
我自己做了一遍,对比着看看你的有啥问题不

创建用户表

CREATE TABLE [dbo].[用户表](
[userid] [INT] IDENTITY(1,1) NOT NULL,
[用户名] [NVARCHAR](50) NULL,
[用户密码] [NVARCHAR](50) NULL,
CONSTRAINT [PK_用户表] PRIMARY KEY CLUSTERED
(
[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



创建登录表
CREATE TABLE [dbo].[登录表](
[登录名] [NVARCHAR](50) NOT NULL,
[登录密码] [NVARCHAR](50) NULL,
[Bid] [INT] NULL
) ON [PRIMARY]

GO


给用户表插入数据
INSERT INTO dbo.用户表
( 用户名, 用户密码 )
VALUES ( N'测试1', -- 用户名 - nvarchar(50)
N'123' -- 密码 - nvarchar(50)
)


给用户表添加触发器
create TRIGGER [dbo].[tritest1] ON [dbo].[用户表]
FOR UPDATE --更新触发
AS
DECLARE @id INT;
DECLARE @name NVARCHAR(100);
DECLARE @password NVARCHAR(100);

SELECT @id = userid ,
@name = 用户名 ,
@password = 用户密码
FROM Inserted;

BEGIN
UPDATE 登录表
SET 登录名 = @name ,
登录密码 = @password
WHERE Bid = @id

END


初始化登录表(把用户表数据导入到登录表)
INSERT  INTO dbo.登录表
( 登录名, 登录密码, Bid )
SELECT 用户名 ,
用户密码 ,
userid
FROM dbo.用户表



更新用户表(这时候登录表应该跟着一起改变)
UPDATE dbo.用户表 SET 用户密码 = '123456' WHERE userid=1


查看测试结果(用户表改变登录表跟着一起改变):
SELECT * FROM dbo.登录表









wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 41 楼 sinat_28984567 的回复:
[quote=引用 40 楼 wschuxuezhe 的回复:] [quote=引用 38 楼 sinat_28984567 的回复:] [quote=引用 37 楼 wschuxuezhe 的回复:] [quote=引用 34 楼 sinat_28984567 的回复:]
大大 没有启动这个按钮![/quote] 右击你写的那个触发器[/quote] 大大我把右键了的截图给你了。[/quote] 看你的图触发器应该是启用状态。。[/quote] 他根本没有启动这个按钮啊 好绝望
二月十六 2017-03-24
  • 打赏
  • 举报
回复
引用 40 楼 wschuxuezhe 的回复:
[quote=引用 38 楼 sinat_28984567 的回复:] [quote=引用 37 楼 wschuxuezhe 的回复:] [quote=引用 34 楼 sinat_28984567 的回复:]
大大 没有启动这个按钮![/quote] 右击你写的那个触发器[/quote] 大大我把右键了的截图给你了。[/quote] 看你的图触发器应该是启用状态。。
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 38 楼 sinat_28984567 的回复:
[quote=引用 37 楼 wschuxuezhe 的回复:] [quote=引用 34 楼 sinat_28984567 的回复:]
大大 没有启动这个按钮![/quote] 右击你写的那个触发器[/quote] 大大我把右键了的截图给你了。
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
这个才是我右键触发器的截图 怎么办 我也很绝望啊
二月十六 2017-03-24
  • 打赏
  • 举报
回复
引用 37 楼 wschuxuezhe 的回复:
[quote=引用 34 楼 sinat_28984567 的回复:]
大大 没有启动这个按钮![/quote] 右击你写的那个触发器
wschuxuezhe 2017-03-24
  • 打赏
  • 举报
回复
引用 34 楼 sinat_28984567 的回复:
大大 没有启动这个按钮!
gw6328 2017-03-23
  • 打赏
  • 举报
回复
如果你是导数据可以一个查询搞定。如果是业务上面可以代码里实现。 如果后续新加表记录,可以用触发器。
浪子回头8 2017-03-23
  • 打赏
  • 举报
回复
这三张表完全可以合并为一张!
wschuxuezhe 2017-03-22
  • 打赏
  • 举报
回复
引用 19 楼 sinat_28984567 的回复:
[quote=引用 18 楼 wschuxuezhe 的回复:] [quote=引用 17 楼 sinat_28984567 的回复:] [quote=引用 16 楼 wschuxuezhe 的回复:] 不啊 我只有新建 启用Power SHell 报表与刷新这四个选项
sql版本是什么?还有登录的用户什么权限?[/quote] 版本是2014的 登录的话用的是sa windows账号也是过 一样的。。[/quote] 个人版、企业版or开发版?[/quote] 这个我不是很清楚了。。
二月十六 2017-03-22
  • 打赏
  • 举报
回复
引用 18 楼 wschuxuezhe 的回复:
[quote=引用 17 楼 sinat_28984567 的回复:] [quote=引用 16 楼 wschuxuezhe 的回复:] 不啊 我只有新建 启用Power SHell 报表与刷新这四个选项
sql版本是什么?还有登录的用户什么权限?[/quote] 版本是2014的 登录的话用的是sa windows账号也是过 一样的。。[/quote] 个人版、企业版or开发版?
wschuxuezhe 2017-03-22
  • 打赏
  • 举报
回复
引用 17 楼 sinat_28984567 的回复:
[quote=引用 16 楼 wschuxuezhe 的回复:] 不啊 我只有新建 启用Power SHell 报表与刷新这四个选项
sql版本是什么?还有登录的用户什么权限?[/quote] 版本是2014的 登录的话用的是sa windows账号也是过 一样的。。
二月十六 2017-03-22
  • 打赏
  • 举报
回复
引用 16 楼 wschuxuezhe 的回复:
不啊 我只有新建 启用Power SHell 报表与刷新这四个选项
sql版本是什么?还有登录的用户什么权限?
wschuxuezhe 2017-03-22
  • 打赏
  • 举报
回复
引用 15 楼 sinat_28984567 的回复:
应该是这种的
不啊 我只有新建 启用Power SHell 报表与刷新这四个选项
二月十六 2017-03-22
  • 打赏
  • 举报
回复
应该是这种的
加载更多回复(28)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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