gpt4 book ai didi

sql - 我可以将列的默认值设置为同一表中同一行的另一列的字符串吗?

转载 作者:行者123 更新时间:2023-12-03 06:04:05 27 4
gpt4 key购买 nike

这是基本表格布局:

create table employees (employeeid int not null IDENTITY, 
firstname varchar(50), middlename varchar(50), lastname varchar(50),
assumedfirstname default(firstname), assumedname as concat(assumedfirstname,' ',lastname)

据我了解,上述语句中未正确创建假定的名字列;默认值必须是标量表达式并且不能是列名。 话虽如此,上述声明清楚地说明了我的意图。也就是说,我希望假定的名字列自动填充为名字中找到的值,但允许稍后用单独的字符串显式替换。这样,假定的名字将始终代表该人的名字和姓氏的默认值姓名或明确输入的假定名字及其姓氏。

因此,计算列在这种情况下将不起作用。

最佳答案

您不能将其设置为默认值,但可以使用触发器模拟它;

CREATE TABLE employees (
employeeid INT NOT NULL IDENTITY,
firstname VARCHAR(50),
middlename VARCHAR(50),
lastname VARCHAR(50),
assumedfirstname VARCHAR(50),
assumedname AS assumedfirstname + ' ' + lastname
);

CREATE TRIGGER MyTrigger on employees
FOR UPDATE, INSERT AS
UPDATE e
SET e.assumedfirstname = COALESCE(e.assumedfirstname, i.firstname)
FROM employees e
JOIN inserted i
ON i.employeeid=e.employeeid;

如果假定的firstname 设置为null(即未设置),则此触发器会将其更新为firstname 的值。

An SQLfiddle to test with .

关于sql - 我可以将列的默认值设置为同一表中同一行的另一列的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16699206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com