C# 如何在表中插入imagepath
我有一个名为employee的表,其中包含以下列:C# 如何在表中插入imagepath,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我有一个名为employee的表,其中包含以下列: empid int (autoincrement,PK), empname varchar, imagepath varchar 我想插入empid、empname和imagepath,其中image name应该是自动递增id的值,如~/images/1.jpg这里1是该行的自动递增id 这是不是完美的代码 insert into employee (name, path) values ( 'sarju', (select '~/
empid int (autoincrement,PK),
empname varchar,
imagepath varchar
我想插入empid、empname和imagepath,其中image name应该是自动递增id的值,如~/images/1.jpg这里1是该行的自动递增id
这是不是完美的代码
insert into employee (name, path)
values
(
'sarju',
(select '~/images/'+Cast(ISNULL(max(empid),0)+1 as varchar(50))+'.jpg' from emp)
)
在员工姓名中插入路径值'sarju',从emp中选择'~/images/'+CastISNULLmaxempid,0+1作为varchar50+'.jpg'
是的,这是可能的在员工姓名中插入路径值'sarju',从emp中选择'~/images/'+CastISNULLmaxempid,0+1作为varchar50+'.jpg'
是的,这是可能的我可能会为此而生气,因为很多人不喜欢触发器,但这是一个完美的例子,说明了触发器的用途,我真诚地希望全世界都知道:
CREATE TRIGGER update_imagepath ON dbo.employee FOR insert AS
UPDATE employee
SET imagepath = '~/images/' + CAST((SELECT empid FROM inserted) AS VARCHAR) + '.jpg'
WHERE empid = (SELECT empid FROM inserted)
它们确实是有目的的,像这样的事情正是如此。请看,您只需要插入员工的姓名,触发器就会自动运行。老实说,这是最直接的处理方法。这样做的另一个好处是,如果批量插入一组员工或从ManagementStudio运行insert语句,触发器仍然会运行!你不需要去挖掘那些疯狂的插入语句 我可能会因此而生气,因为很多人不喜欢触发器,但这是一个完美的例子,说明了触发器的用途,我真诚地希望全世界都知道:
CREATE TRIGGER update_imagepath ON dbo.employee FOR insert AS
UPDATE employee
SET imagepath = '~/images/' + CAST((SELECT empid FROM inserted) AS VARCHAR) + '.jpg'
WHERE empid = (SELECT empid FROM inserted)
它们确实是有目的的,像这样的事情正是如此。请看,您只需要插入员工的姓名,触发器就会自动运行。老实说,这是最直接的处理方法。这样做的另一个好处是,如果批量插入一组员工或从ManagementStudio运行insert语句,触发器仍然会运行!你不需要去挖掘那些疯狂的插入语句 这不是一个完美的代码,因为MAXID+1可能与下一个自动增量值不同。您可以使用IDENT_CURRENT函数
INSERT INTO employee (name,path)
SELECT 'sarju','~/images/'+CAST(IDENT_CURRENT('employee') AS VARCHAR(50))+'.jpg'
这不是一个完美的代码,因为MAXID+1可能与下一个自动增量值不同。您可以使用IDENT_CURRENT函数
INSERT INTO employee (name,path)
SELECT 'sarju','~/images/'+CAST(IDENT_CURRENT('employee') AS VARCHAR(50))+'.jpg'
编辑:在这项工作中,我不得不说,尼纳德·齐夫科维奇的解决方案更好
您可以使用SCOPE_IDENTITY来获取最新创建的ID。这也会更安全,这样您就不会获取错误的ID
insert into employee (name)
values ( 'sarju')
declare @employeeId as int = SCOPE_IDENTITY()
update employee set
path = '~/images/' + cast(@employeeId as varchar(50)) + '.jpg'
where empid = @employeeId
编辑:在这项工作中,我不得不说,尼纳德·齐夫科维奇的解决方案更好
您可以使用SCOPE_IDENTITY来获取最新创建的ID。这也会更安全,这样您就不会获取错误的ID
insert into employee (name)
values ( 'sarju')
declare @employeeId as int = SCOPE_IDENTITY()
update employee set
path = '~/images/' + cast(@employeeId as varchar(50)) + '.jpg'
where empid = @employeeId
如果只有一个特定文件夹存储图像,则只需将字段imagepath设置为计算值即可
CREATE TABLE employee
(
empid int IDENTITY(1,1) NOT NULL,
empname VARCHAR(50) NOT NULL,
imagepath AS ('~/images/'+cast(empid AS VARCHAR(50))+'.jpg')
)
INSERT INTO employee (empname)
VALUES ('sarju')
INSERT INTO employee (empname)
VALUES ('sarju2')
如果只有一个特定文件夹存储图像,则只需将字段imagepath设置为计算值即可
CREATE TABLE employee
(
empid int IDENTITY(1,1) NOT NULL,
empname VARCHAR(50) NOT NULL,
imagepath AS ('~/images/'+cast(empid AS VARCHAR(50))+'.jpg')
)
INSERT INTO employee (empname)
VALUES ('sarju')
INSERT INTO employee (empname)
VALUES ('sarju2')
你可以写一个触发器来做你想做的事。谢谢,但是你能举个例子吗?你可以写一个触发器来做你想做的事。谢谢,但是你能举个例子吗?如果在imagepath列中插入不同的当前值,那么??假设我像“~/images/”那样插入,那么什么?不,请确保我理解您的意思:您不需要插入imagepath,它将根据empid自动计算。您只需插入empname,下一个empid将自动递增,比如说10,imagepath计算为“~/images/10.jpg”是的,我理解您的意思,但如果在imagefield中插入“~/images/10.jpg”或在insert qry中仅插入“10.jpg”,则imagepath将包含“~/images/10.jpg”,并且您的insert语句将仅插入员工empname值“sarju”中,这意味着您不需要插入imagepath,也不需要担心它。如果在imagepath列中插入不同的值,那么??假设我只插入“~/images/”这样的值,那么什么?不,请确保我理解您的意思:您不需要插入imagepath,它将根据empid自动计算。您只需插入empname,下一个empid将自动递增,比如说10,imagepath计算为“~/images/10.jpg”是的,我理解您的意思,但如果在imagefield中插入“~/images/10.jpg”或在insert qry中仅插入“10.jpg”,则imagepath将包含“~/images/10.jpg”,并且您的insert语句将仅插入员工empname值“sarju”中,这意味着您不需要插入imagepath并担心它。我可以使用一个查询插入记录吗?我可以使用一个查询插入记录吗??