【发布时间】:2022-12-12 22:35:45
【问题描述】:
我是 SQL 的新手,我收到此查询的错误:
Insert into admin.MaintenanceWindows (StartTime, StopTime, Message, Status, AccessibilityLabel)
OUTPUT inserted.StartTime
values ('2022-12-17 03:47:00', '2022-12-18 03:47:00', 'Testdeclare', 'Scheduled', 'TEST');
我也试过
DECLARE @inserted table (StartTime int);
insert into admin.MaintenanceWindows (StartTime, StopTime, Message, Status, AccessibilityLabel)
output inserted.StartTime into @inserted
values ('2022-12-17 03:47:00', '2022-12-18 03:47:00', 'Testdeclare', 'Scheduled', 'TEST');
select * from @inserted;
我得到错误:-声明无效以及输出无效
错误代码:1064。您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在“OUTPUT inserted.StartTime values ('2022-12-17 03:47:00', '2022-12-18 03:47:00.. .' 在第 2 行
【问题讨论】:
-
如果您以 MariaDB 为目标,为什么要使用
SQL Server标签?这些是完全不同的产品。 -
你确定是sql-server吗?
-
这是标记为 sql-server,但你的标题和诗人谈论的是 MariaDB?
-
OUTPUT是 SQL Server 的一项功能。 MariaDB 中的等效功能由 the RETURNING clause 提供 -
数据库产品仅提供对 SQL 标准的基本支持。全部数据库具有在其他数据库中不起作用的自定义语法和功能。您不能只使用一种产品的语法在另一种产品中做同样的事情。在这种情况下,SQL Server 中的
OUTPUT用于返回数据因操作而改变,例如触发器、默认值、AUTOINCREMENT 约束。在 MariaDB、PostgreSQL 和 Oracle 中,同样的事情是使用RETURNING完成的。 MySQL 根本没有这个特性