相关疑难解决方法(0)

SQL Server 2008 - 如果不是EXISTS INSERT ELSE UPDATE

我道歉,但这是一个两部分问题.

我对SQL非常陌生,我正在尝试为我工作的小型办公室开发一个时钟应用程序.我现在正在使用SQL后端,并对复合语句有疑问.

我遇到的问题是,如果用户试图退出休息但从未在转换开始时计时,则SQL需要创建一个新行而不是更新现有行.

这是我尝试过的:

    IF NOT EXISTS(SELECT * FROM Clock WHERE clockDate = '08/10/2012') AND userName = 'test')
    BEGIN
        INSERT INTO Clock(clockDate, userName, breakOut)
        VALUES({ fn NOW() }, 'test', { fn NOW() })
    END
    ELSE
    BEGIN
        UPDATE Clock
        SET breakOut = { fn NOW() }
        WHERE (clockDate = '08/10/2012') AND (userName = 'test')
    END
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2010在本地计算机上连接到SQL Server Express 2008.我收到一条错误消息,指出"不支持复合语句SQL结构或语句." 然而,接下来是一行已经受到影响的消息,当我查看我的Clock表时,它看起来就像我期望的那样.如何解释这个问题最好的方法是什么?

我在这个问题的第二部分是在我的WHERE语句中.是否有函数可以在clockDate列中获取今天的日期而不必填充今天的日期?只是想提前构建前端应用程序.

    IF NOT EXISTS(SELECT * FROM Clock WHERE clockDate = { fn CURRENT_DATE() }) AND userName = 'test')
Run Code Online (Sandbox Code Playgroud)

再一次,这给了我想要的结果,但直到收到错误"错误在'CURRENT_DATE'附近的WHERE子句中.无法解析查询文本." …

sql sql-server-2008

67
推荐指数
3
解决办法
41万
查看次数

标签 统计

sql ×1

sql-server-2008 ×1