首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关系table_name的列table_name不存在

关系table_name的列table_name不存在
EN

Stack Overflow用户
提问于 2021-12-02 03:18:40
回答 1查看 28关注 0票数 0

我的项目使用Postgresql和Microsoft SQL Server。所以我不能在Postgresql中更改参数名。在这种情况下,我如何修复错误。

下面是我的函数。

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION schedule_updatealarmsetting(
    userno integer,
    isemail boolean,
    isalarmi boolean,
    ispc boolean,
    ismobile boolean,
    timealarm integer,
    isunuse boolean)
  RETURNS void AS
$BODY$ 
BEGIN
    -- check exists
    if(exists(select 1 from ScheduleAlarmSetting A where A.UserNo = Schedule_UpdateAlarmSetting.UserNo)) then
    begin
        -- update
        update ScheduleAlarmSetting 
        set IsEmail = Schedule_UpdateAlarmSetting.IsEmail
        , ScheduleAlarmSetting.IsAlarmi = Schedule_UpdateAlarmSetting.IsAlarmi
        , ScheduleAlarmSetting.IsPC = Schedule_UpdateAlarmSetting.IsPC
        , ScheduleAlarmSetting.TimeAlarm = Schedule_UpdateAlarmSetting.TimeAlarm 
        , ScheduleAlarmSetting.IsMobile = Schedule_UpdateAlarmSetting.IsMobile
        , ScheduleAlarmSetting.IsUnuse = Schedule_UpdateAlarmSetting.IsUnuse
        , ScheduleAlarmSetting.ModDate = now()
        , ScheduleAlarmSetting.ModUserNo = Schedule_UpdateAlarmSetting.UserNo
        where ScheduleAlarmSetting.UserNo = Schedule_UpdateAlarmSetting.UserNo;
    end;
    else
    begin
        -- insert
        insert into ScheduleAlarmSetting(UserNo,IsEmail,IsAlarmi,IsPC,IsMobile, TimeAlarm, IsUnuse,RegUserNo,RegDate)
        values (Schedule_UpdateAlarmSetting.UserNo
        , Schedule_UpdateAlarmSetting.IsEmail
        , Schedule_UpdateAlarmSetting.IsAlarmi
        , Schedule_UpdateAlarmSetting.IsPC
        , Schedule_UpdateAlarmSetting.IsMobile
        , Schedule_UpdateAlarmSetting.TimeAlarm
        , Schedule_UpdateAlarmSetting.IsUnuse
        , Schedule_UpdateAlarmSetting.UserNo
        , now());
    end;
    end if;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION schedule_updatealarmsetting(integer, boolean, boolean, boolean, boolean, integer, boolean)
  OWNER TO postgres;


select * from schedule_updatealarmsetting(1,True, True, True, True,0,false);

错误:关系"schedulealarmsetting“的列"schedulealarmsetting”不存在

当我删除“schedulealarmsetting”。它将显示错误:“列引用"userno”不明确“

EN

回答 1

Stack Overflow用户

发布于 2021-12-02 05:05:58

在PostgreSQL中,不能在update命令的set命令后使用表别名。而不是这个查询:

代码语言:javascript
复制
update ScheduleAlarmSetting 
set IsEmail = Schedule_UpdateAlarmSetting.IsEmail
, ScheduleAlarmSetting.IsAlarmi = Schedule_UpdateAlarmSetting.IsAlarmi
, ScheduleAlarmSetting.IsPC = Schedule_UpdateAlarmSetting.IsPC
, ScheduleAlarmSetting.TimeAlarm = Schedule_UpdateAlarmSetting.TimeAlarm 
, ScheduleAlarmSetting.IsMobile = Schedule_UpdateAlarmSetting.IsMobile
, ScheduleAlarmSetting.IsUnuse = Schedule_UpdateAlarmSetting.IsUnuse
, ScheduleAlarmSetting.ModDate = now()
, ScheduleAlarmSetting.ModUserNo = Schedule_UpdateAlarmSetting.UserNo
where ScheduleAlarmSetting.UserNo = Schedule_UpdateAlarmSetting.UserNo;

您可以使用以下查询:

代码语言:javascript
复制
update ScheduleAlarmSetting 
set IsEmail = Schedule_UpdateAlarmSetting.IsEmail
, IsAlarmi = Schedule_UpdateAlarmSetting.IsAlarmi
, IsPC = Schedule_UpdateAlarmSetting.IsPC
, TimeAlarm = Schedule_UpdateAlarmSetting.TimeAlarm 
, IsMobile = Schedule_UpdateAlarmSetting.IsMobile
, IsUnuse = Schedule_UpdateAlarmSetting.IsUnuse
, ModDate = now()
, ModUserNo = Schedule_UpdateAlarmSetting.UserNo
where ScheduleAlarmSetting.UserNo = Schedule_UpdateAlarmSetting.UserNo;

Microsoft SQL Server和大多数数据库中的UPDATE命令都是以这种格式写入的,不能在设置后使用别名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70193819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档