SMSS'无效的列名'

时间:2015-04-28 09:04:10

标签: sql stored-procedures triggers ssms

在你谴责我如何在这里问这个问题之前:'我想指出我确实谷歌了。在某些情况下我甚至去了第3页。 战栗

所以这是交易: 我正在尝试审核我们拥有的数据库,为几个表设置UPDATEINSERTDELETE语句的触发器。触发器是成功创建和链接的。每个触发器执行一个存储过程,将所需数据插入到我们的 tick_audit 表中。

此信息是:

  • USER_ACCOUNT;存储更改了某些内容
  • 的client_id;存储哪些客户的数据已更改
  • DATE_TIME;编辑日期
  • 表名;已更改的表的名称
  • table_record_id;已更改记录的 id
  • DESCR; 为什么更改内容
  • 的说明
  • remote_ip_address;因此,我们可以密切关注某些内容(内部或外部)

该表还有一个PRIMARY_KEY,AUTO_INCREMENT id 字段。

当我尝试创建存储过程

create procedure update_tick_user
@UserId         varchar(32),
@ClientId       varchar(32),
@Table          varchar(64),
@TableRecord    varchar(512),
@Descr          varchar(128),
@RemoteIP       varchar(16)
as
begin
    insert into tick_audit ('user_account', 'client_id', 'date_time', 'table_name', 'table_record_id', 'descr', 'remote_ip_address')
    values
    (@UserId, @ClientId, getdate(), @Table, @TableRecord, @Descr, @RemoteIP)
end;

我收到以下错误:

  

消息207,级别16,状态1,过程update_tick_user,第10行   列名称'user_account'无效。

每列重复一次。我跑的时候

exec sp_columns tick_audit

我从 tick_audit 获取所有列,甚至将其名称复制到插入的列字段中,我得到上述错误。我只是在运行

时遇到错误
insert into tick_audit 
('user_account', 'client_id', 'date_time', 'table_name', 'table_record_id', 'descr', 'remote_ip_address')
values
('', '', getdate(), '', '', '', '')

每当我尝试在不同的表上插入,更新或删除时,我都没有错误。有没有什么我可以试着找出我的桌子是否有问题,或者是一些超级秘密的hocus-pocus,仪式式方法?

这是我到目前为止所尝试的内容:

  • 放下桌子(在我的脚上,多次),重新创建它。
  • 谷歌三个小时
  • 问我的同事
  • 戴上我的思考帽
  • 检查列是否确实存在(通过exec,select)

交叉双手,希望有人可以帮助我。

3 个答案:

答案 0 :(得分:2)

删除(require '[org.tobereplaced.nio.file :refer [create-symbolic-link! ] :as nio]) (defn createSimLink [ targetPath newLink ] (let [theName (.getName (File. targetPath))] (try (nio/create-symbolic-link! (str newLink "/" theName) targetPath ) (catch Exception e (prn "error " e))))) (createSimLink "c:/tmp/test.txt" "c:/tmp/myFolder") 以使'如下

insert

答案 1 :(得分:0)

不要使用单引号arround列名。

MySQL Workbench

答案 2 :(得分:0)

使用括号代替引号:

insert into tick_audit ([user_account], [client_id], [date_time], [table_name], [table_record_id], [descr], [remote_ip_address])
values (@UserId, @ClientId, getdate(), @Table, @TableRecord, @Descr, @RemoteIP)

单引号适用于文字。对于分隔对象名称,您应该使用括号或双引号,但只有在QUOTED_IDENTIFIER设置为ON时才能使用双引号。