[英]how to insert imagepath in table
我有一個名為employee
的表,其中包含以下各列:
empid int (autoincrement,PK),
empname varchar,
imagepath varchar
我想插入empid
, empname
和imagepath
,其中image name應該是~/images/1.jpg
類的自動遞增id的值(此處1是該行的自動遞增id)
這是不是完美的代碼???
insert into employee (name, path)
values
(
'sarju',
(select '~/images/'+Cast(ISNULL(max(empid),0)+1 as varchar(50))+'.jpg' from emp)
)
這不是完美的代碼,因為MAX(ID)+1可能與下一個自動遞增值不同。 您可以使用IDENT_CURRENT函數
INSERT INTO employee (name,path)
SELECT 'sarju','~/images/'+CAST(IDENT_CURRENT('employee') AS VARCHAR(50))+'.jpg'
插入員工(名稱,路徑)值('sarju',(從emp中選擇'〜/ images /'+ Cast(ISNULL(max(empid),0)+1作為varchar(50))+'。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)
他們確實有一個目的,像這樣的事情就是這樣。 瞧,您只需要INSERT
雇員的姓名, TRIGGER
就會自動運行。 老實說,這是處理此問題的最直接的方法。 這樣做的另一個好處-如果您批量插入了一堆員工或從Management Studio運行插入語句,則觸發器仍將運行! 您無需挖掘瘋狂的INSERT
語句!
編輯:在這項工作中,我不得不說Nenad Zivkovics解決方案更好。
您可以使用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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.